/**
 * Swiper 5.4.5
 * Most modern mobile touch slider and framework with hardware accelerated transitions
 * http://swiperjs.com
 *
 * Copyright 2014-2020 Vladimir Kharlampidi
 *
 * Released under the MIT License
 *
 * Released on: June 16, 2020
 */

!(function (e, t) {
  'object' == typeof exports && 'undefined' != typeof module
    ? (module.exports = t())
    : 'function' == typeof define && define.amd
    ? define(t)
    : ((e = e || self).Swiper = t())
})(this, function () {
  'use strict'
  function e(e) {
    return (
      null !== e &&
      'object' == typeof e &&
      'constructor' in e &&
      e.constructor === Object
    )
  }
  function t(i, s) {
    void 0 === i && (i = {}),
      void 0 === s && (s = {}),
      Object.keys(s).forEach(function (a) {
        void 0 === i[a]
          ? (i[a] = s[a])
          : e(s[a]) && e(i[a]) && Object.keys(s[a]).length > 0 && t(i[a], s[a])
      })
  }
  var i = 'undefined' != typeof document ? document : {},
    s = {
      body: {},
      addEventListener: function () {},
      removeEventListener: function () {},
      activeElement: { blur: function () {}, nodeName: '' },
      querySelector: function () {
        return null
      },
      querySelectorAll: function () {
        return []
      },
      getElementById: function () {
        return null
      },
      createEvent: function () {
        return { initEvent: function () {} }
      },
      createElement: function () {
        return {
          children: [],
          childNodes: [],
          style: {},
          setAttribute: function () {},
          getElementsByTagName: function () {
            return []
          }
        }
      },
      createElementNS: function () {
        return {}
      },
      importNode: function () {
        return null
      },
      location: {
        hash: '',
        host: '',
        hostname: '',
        href: '',
        origin: '',
        pathname: '',
        protocol: '',
        search: ''
      }
    }
  t(i, s)
  var a = 'undefined' != typeof window ? window : {}
  t(a, {
    document: s,
    navigator: { userAgent: '' },
    location: {
      hash: '',
      host: '',
      hostname: '',
      href: '',
      origin: '',
      pathname: '',
      protocol: '',
      search: ''
    },
    history: {
      replaceState: function () {},
      pushState: function () {},
      go: function () {},
      back: function () {}
    },
    CustomEvent: function () {
      return this
    },
    addEventListener: function () {},
    removeEventListener: function () {},
    getComputedStyle: function () {
      return {
        getPropertyValue: function () {
          return ''
        }
      }
    },
    Image: function () {},
    Date: function () {},
    screen: {},
    setTimeout: function () {},
    clearTimeout: function () {},
    matchMedia: function () {
      return {}
    }
  })
  var r = function (e) {
    for (var t = 0; t < e.length; t += 1) this[t] = e[t]
    return (this.length = e.length), this
  }
  function n(e, t) {
    var s = [],
      n = 0
    if (e && !t && e instanceof r) return e
    if (e)
      if ('string' == typeof e) {
        var o,
          l,
          d = e.trim()
        if (d.indexOf('<') >= 0 && d.indexOf('>') >= 0) {
          var h = 'div'
          for (
            0 === d.indexOf('<li') && (h = 'ul'),
              0 === d.indexOf('<tr') && (h = 'tbody'),
              (0 !== d.indexOf('<td') && 0 !== d.indexOf('<th')) || (h = 'tr'),
              0 === d.indexOf('<tbody') && (h = 'table'),
              0 === d.indexOf('<option') && (h = 'select'),
              (l = i.createElement(h)).innerHTML = d,
              n = 0;
            n < l.childNodes.length;
            n += 1
          )
            s.push(l.childNodes[n])
        } else
          for (
            o =
              t || '#' !== e[0] || e.match(/[ .<>:~]/)
                ? (t || i).querySelectorAll(e.trim())
                : [i.getElementById(e.trim().split('#')[1])],
              n = 0;
            n < o.length;
            n += 1
          )
            o[n] && s.push(o[n])
      } else if (e.nodeType || e === a || e === i) s.push(e)
      else if (e.length > 0 && e[0].nodeType)
        for (n = 0; n < e.length; n += 1) s.push(e[n])
    return new r(s)
  }
  function o(e) {
    for (var t = [], i = 0; i < e.length; i += 1)
      -1 === t.indexOf(e[i]) && t.push(e[i])
    return t
  }
  ;(n.fn = r.prototype), (n.Class = r), (n.Dom7 = r)
  var l = {
    addClass: function (e) {
      if (void 0 === e) return this
      for (var t = e.split(' '), i = 0; i < t.length; i += 1)
        for (var s = 0; s < this.length; s += 1)
          void 0 !== this[s] &&
            void 0 !== this[s].classList &&
            this[s].classList.add(t[i])
      return this
    },
    removeClass: function (e) {
      for (var t = e.split(' '), i = 0; i < t.length; i += 1)
        for (var s = 0; s < this.length; s += 1)
          void 0 !== this[s] &&
            void 0 !== this[s].classList &&
            this[s].classList.remove(t[i])
      return this
    },
    hasClass: function (e) {
      return !!this[0] && this[0].classList.contains(e)
    },
    toggleClass: function (e) {
      for (var t = e.split(' '), i = 0; i < t.length; i += 1)
        for (var s = 0; s < this.length; s += 1)
          void 0 !== this[s] &&
            void 0 !== this[s].classList &&
            this[s].classList.toggle(t[i])
      return this
    },
    attr: function (e, t) {
      var i = arguments
      if (1 === arguments.length && 'string' == typeof e)
        return this[0] ? this[0].getAttribute(e) : void 0
      for (var s = 0; s < this.length; s += 1)
        if (2 === i.length) this[s].setAttribute(e, t)
        else for (var a in e) (this[s][a] = e[a]), this[s].setAttribute(a, e[a])
      return this
    },
    removeAttr: function (e) {
      for (var t = 0; t < this.length; t += 1) this[t].removeAttribute(e)
      return this
    },
    data: function (e, t) {
      var i
      if (void 0 !== t) {
        for (var s = 0; s < this.length; s += 1)
          (i = this[s]).dom7ElementDataStorage ||
            (i.dom7ElementDataStorage = {}),
            (i.dom7ElementDataStorage[e] = t)
        return this
      }
      if ((i = this[0])) {
        if (i.dom7ElementDataStorage && e in i.dom7ElementDataStorage)
          return i.dom7ElementDataStorage[e]
        var a = i.getAttribute('data-' + e)
        return a || void 0
      }
    },
    transform: function (e) {
      for (var t = 0; t < this.length; t += 1) {
        var i = this[t].style
        ;(i.webkitTransform = e), (i.transform = e)
      }
      return this
    },
    transition: function (e) {
      'string' != typeof e && (e += 'ms')
      for (var t = 0; t < this.length; t += 1) {
        var i = this[t].style
        ;(i.webkitTransitionDuration = e), (i.transitionDuration = e)
      }
      return this
    },
    on: function () {
      for (var e, t = [], i = arguments.length; i--; ) t[i] = arguments[i]
      var s = t[0],
        a = t[1],
        r = t[2],
        o = t[3]
      function l(e) {
        var t = e.target
        if (t) {
          var i = e.target.dom7EventData || []
          if ((i.indexOf(e) < 0 && i.unshift(e), n(t).is(a))) r.apply(t, i)
          else
            for (var s = n(t).parents(), o = 0; o < s.length; o += 1)
              n(s[o]).is(a) && r.apply(s[o], i)
        }
      }
      function d(e) {
        var t = (e && e.target && e.target.dom7EventData) || []
        t.indexOf(e) < 0 && t.unshift(e), r.apply(this, t)
      }
      'function' == typeof t[1] &&
        ((s = (e = t)[0]), (r = e[1]), (o = e[2]), (a = void 0)),
        o || (o = !1)
      for (var h, p = s.split(' '), c = 0; c < this.length; c += 1) {
        var u = this[c]
        if (a)
          for (h = 0; h < p.length; h += 1) {
            var v = p[h]
            u.dom7LiveListeners || (u.dom7LiveListeners = {}),
              u.dom7LiveListeners[v] || (u.dom7LiveListeners[v] = []),
              u.dom7LiveListeners[v].push({ listener: r, proxyListener: l }),
              u.addEventListener(v, l, o)
          }
        else
          for (h = 0; h < p.length; h += 1) {
            var f = p[h]
            u.dom7Listeners || (u.dom7Listeners = {}),
              u.dom7Listeners[f] || (u.dom7Listeners[f] = []),
              u.dom7Listeners[f].push({ listener: r, proxyListener: d }),
              u.addEventListener(f, d, o)
          }
      }
      return this
    },
    off: function () {
      for (var e, t = [], i = arguments.length; i--; ) t[i] = arguments[i]
      var s = t[0],
        a = t[1],
        r = t[2],
        n = t[3]
      'function' == typeof t[1] &&
        ((s = (e = t)[0]), (r = e[1]), (n = e[2]), (a = void 0)),
        n || (n = !1)
      for (var o = s.split(' '), l = 0; l < o.length; l += 1)
        for (var d = o[l], h = 0; h < this.length; h += 1) {
          var p = this[h],
            c = void 0
          if (
            (!a && p.dom7Listeners
              ? (c = p.dom7Listeners[d])
              : a && p.dom7LiveListeners && (c = p.dom7LiveListeners[d]),
            c && c.length)
          )
            for (var u = c.length - 1; u >= 0; u -= 1) {
              var v = c[u]
              ;(r && v.listener === r) ||
              (r &&
                v.listener &&
                v.listener.dom7proxy &&
                v.listener.dom7proxy === r)
                ? (p.removeEventListener(d, v.proxyListener, n), c.splice(u, 1))
                : r ||
                  (p.removeEventListener(d, v.proxyListener, n), c.splice(u, 1))
            }
        }
      return this
    },
    trigger: function () {
      for (var e = [], t = arguments.length; t--; ) e[t] = arguments[t]
      for (var s = e[0].split(' '), r = e[1], n = 0; n < s.length; n += 1)
        for (var o = s[n], l = 0; l < this.length; l += 1) {
          var d = this[l],
            h = void 0
          try {
            h = new a.CustomEvent(o, { detail: r, bubbles: !0, cancelable: !0 })
          } catch (e) {
            ;(h = i.createEvent('Event')).initEvent(o, !0, !0), (h.detail = r)
          }
          ;(d.dom7EventData = e.filter(function (e, t) {
            return t > 0
          })),
            d.dispatchEvent(h),
            (d.dom7EventData = []),
            delete d.dom7EventData
        }
      return this
    },
    transitionEnd: function (e) {
      var t,
        i = ['webkitTransitionEnd', 'transitionend'],
        s = this
      function a(r) {
        if (r.target === this)
          for (e.call(this, r), t = 0; t < i.length; t += 1) s.off(i[t], a)
      }
      if (e) for (t = 0; t < i.length; t += 1) s.on(i[t], a)
      return this
    },
    outerWidth: function (e) {
      if (this.length > 0) {
        if (e) {
          var t = this.styles()
          return (
            this[0].offsetWidth +
            parseFloat(t.getPropertyValue('margin-right')) +
            parseFloat(t.getPropertyValue('margin-left'))
          )
        }
        return this[0].offsetWidth
      }
      return null
    },
    outerHeight: function (e) {
      if (this.length > 0) {
        if (e) {
          var t = this.styles()
          return (
            this[0].offsetHeight +
            parseFloat(t.getPropertyValue('margin-top')) +
            parseFloat(t.getPropertyValue('margin-bottom'))
          )
        }
        return this[0].offsetHeight
      }
      return null
    },
    offset: function () {
      if (this.length > 0) {
        var e = this[0],
          t = e.getBoundingClientRect(),
          s = i.body,
          r = e.clientTop || s.clientTop || 0,
          n = e.clientLeft || s.clientLeft || 0,
          o = e === a ? a.scrollY : e.scrollTop,
          l = e === a ? a.scrollX : e.scrollLeft
        return { top: t.top + o - r, left: t.left + l - n }
      }
      return null
    },
    css: function (e, t) {
      var i
      if (1 === arguments.length) {
        if ('string' != typeof e) {
          for (i = 0; i < this.length; i += 1)
            for (var s in e) this[i].style[s] = e[s]
          return this
        }
        if (this[0])
          return a.getComputedStyle(this[0], null).getPropertyValue(e)
      }
      if (2 === arguments.length && 'string' == typeof e) {
        for (i = 0; i < this.length; i += 1) this[i].style[e] = t
        return this
      }
      return this
    },
    each: function (e) {
      if (!e) return this
      for (var t = 0; t < this.length; t += 1)
        if (!1 === e.call(this[t], t, this[t])) return this
      return this
    },
    html: function (e) {
      if (void 0 === e) return this[0] ? this[0].innerHTML : void 0
      for (var t = 0; t < this.length; t += 1) this[t].innerHTML = e
      return this
    },
    text: function (e) {
      if (void 0 === e) return this[0] ? this[0].textContent.trim() : null
      for (var t = 0; t < this.length; t += 1) this[t].textContent = e
      return this
    },
    is: function (e) {
      var t,
        s,
        o = this[0]
      if (!o || void 0 === e) return !1
      if ('string' == typeof e) {
        if (o.matches) return o.matches(e)
        if (o.webkitMatchesSelector) return o.webkitMatchesSelector(e)
        if (o.msMatchesSelector) return o.msMatchesSelector(e)
        for (t = n(e), s = 0; s < t.length; s += 1) if (t[s] === o) return !0
        return !1
      }
      if (e === i) return o === i
      if (e === a) return o === a
      if (e.nodeType || e instanceof r) {
        for (t = e.nodeType ? [e] : e, s = 0; s < t.length; s += 1)
          if (t[s] === o) return !0
        return !1
      }
      return !1
    },
    index: function () {
      var e,
        t = this[0]
      if (t) {
        for (e = 0; null !== (t = t.previousSibling); )
          1 === t.nodeType && (e += 1)
        return e
      }
    },
    eq: function (e) {
      if (void 0 === e) return this
      var t,
        i = this.length
      return new r(
        e > i - 1 ? [] : e < 0 ? ((t = i + e) < 0 ? [] : [this[t]]) : [this[e]]
      )
    },
    append: function () {
      for (var e, t = [], s = arguments.length; s--; ) t[s] = arguments[s]
      for (var a = 0; a < t.length; a += 1) {
        e = t[a]
        for (var n = 0; n < this.length; n += 1)
          if ('string' == typeof e) {
            var o = i.createElement('div')
            for (o.innerHTML = e; o.firstChild; )
              this[n].appendChild(o.firstChild)
          } else if (e instanceof r)
            for (var l = 0; l < e.length; l += 1) this[n].appendChild(e[l])
          else this[n].appendChild(e)
      }
      return this
    },
    prepend: function (e) {
      var t, s
      for (t = 0; t < this.length; t += 1)
        if ('string' == typeof e) {
          var a = i.createElement('div')
          for (a.innerHTML = e, s = a.childNodes.length - 1; s >= 0; s -= 1)
            this[t].insertBefore(a.childNodes[s], this[t].childNodes[0])
        } else if (e instanceof r)
          for (s = 0; s < e.length; s += 1)
            this[t].insertBefore(e[s], this[t].childNodes[0])
        else this[t].insertBefore(e, this[t].childNodes[0])
      return this
    },
    next: function (e) {
      return this.length > 0
        ? e
          ? this[0].nextElementSibling && n(this[0].nextElementSibling).is(e)
            ? new r([this[0].nextElementSibling])
            : new r([])
          : this[0].nextElementSibling
          ? new r([this[0].nextElementSibling])
          : new r([])
        : new r([])
    },
    nextAll: function (e) {
      var t = [],
        i = this[0]
      if (!i) return new r([])
      for (; i.nextElementSibling; ) {
        var s = i.nextElementSibling
        e ? n(s).is(e) && t.push(s) : t.push(s), (i = s)
      }
      return new r(t)
    },
    prev: function (e) {
      if (this.length > 0) {
        var t = this[0]
        return e
          ? t.previousElementSibling && n(t.previousElementSibling).is(e)
            ? new r([t.previousElementSibling])
            : new r([])
          : t.previousElementSibling
          ? new r([t.previousElementSibling])
          : new r([])
      }
      return new r([])
    },
    prevAll: function (e) {
      var t = [],
        i = this[0]
      if (!i) return new r([])
      for (; i.previousElementSibling; ) {
        var s = i.previousElementSibling
        e ? n(s).is(e) && t.push(s) : t.push(s), (i = s)
      }
      return new r(t)
    },
    parent: function (e) {
      for (var t = [], i = 0; i < this.length; i += 1)
        null !== this[i].parentNode &&
          (e
            ? n(this[i].parentNode).is(e) && t.push(this[i].parentNode)
            : t.push(this[i].parentNode))
      return n(o(t))
    },
    parents: function (e) {
      for (var t = [], i = 0; i < this.length; i += 1)
        for (var s = this[i].parentNode; s; )
          e ? n(s).is(e) && t.push(s) : t.push(s), (s = s.parentNode)
      return n(o(t))
    },
    closest: function (e) {
      var t = this
      return void 0 === e ? new r([]) : (t.is(e) || (t = t.parents(e).eq(0)), t)
    },
    find: function (e) {
      for (var t = [], i = 0; i < this.length; i += 1)
        for (var s = this[i].querySelectorAll(e), a = 0; a < s.length; a += 1)
          t.push(s[a])
      return new r(t)
    },
    children: function (e) {
      for (var t = [], i = 0; i < this.length; i += 1)
        for (var s = this[i].childNodes, a = 0; a < s.length; a += 1)
          e
            ? 1 === s[a].nodeType && n(s[a]).is(e) && t.push(s[a])
            : 1 === s[a].nodeType && t.push(s[a])
      return new r(o(t))
    },
    filter: function (e) {
      for (var t = [], i = 0; i < this.length; i += 1)
        e.call(this[i], i, this[i]) && t.push(this[i])
      return new r(t)
    },
    remove: function () {
      for (var e = 0; e < this.length; e += 1)
        this[e].parentNode && this[e].parentNode.removeChild(this[e])
      return this
    },
    add: function () {
      for (var e = [], t = arguments.length; t--; ) e[t] = arguments[t]
      var i,
        s,
        a = this
      for (i = 0; i < e.length; i += 1) {
        var r = n(e[i])
        for (s = 0; s < r.length; s += 1) (a[a.length] = r[s]), (a.length += 1)
      }
      return a
    },
    styles: function () {
      return this[0] ? a.getComputedStyle(this[0], null) : {}
    }
  }
  Object.keys(l).forEach(function (e) {
    n.fn[e] = n.fn[e] || l[e]
  })
  var d = {
      deleteProps: function (e) {
        var t = e
        Object.keys(t).forEach(function (e) {
          try {
            t[e] = null
          } catch (e) {}
          try {
            delete t[e]
          } catch (e) {}
        })
      },
      nextTick: function (e, t) {
        return void 0 === t && (t = 0), setTimeout(e, t)
      },
      now: function () {
        return Date.now()
      },
      getTranslate: function (e, t) {
        var i, s, r
        void 0 === t && (t = 'x')
        var n = a.getComputedStyle(e, null)
        return (
          a.WebKitCSSMatrix
            ? ((s = n.transform || n.webkitTransform).split(',').length > 6 &&
                (s = s
                  .split(', ')
                  .map(function (e) {
                    return e.replace(',', '.')
                  })
                  .join(', ')),
              (r = new a.WebKitCSSMatrix('none' === s ? '' : s)))
            : (i = (r =
                n.MozTransform ||
                n.OTransform ||
                n.MsTransform ||
                n.msTransform ||
                n.transform ||
                n
                  .getPropertyValue('transform')
                  .replace('translate(', 'matrix(1, 0, 0, 1,'))
                .toString()
                .split(',')),
          'x' === t &&
            (s = a.WebKitCSSMatrix
              ? r.m41
              : 16 === i.length
              ? parseFloat(i[12])
              : parseFloat(i[4])),
          'y' === t &&
            (s = a.WebKitCSSMatrix
              ? r.m42
              : 16 === i.length
              ? parseFloat(i[13])
              : parseFloat(i[5])),
          s || 0
        )
      },
      parseUrlQuery: function (e) {
        var t,
          i,
          s,
          r,
          n = {},
          o = e || a.location.href
        if ('string' == typeof o && o.length)
          for (
            r = (i = (o = o.indexOf('?') > -1 ? o.replace(/\S*\?/, '') : '')
              .split('&')
              .filter(function (e) {
                return '' !== e
              })).length,
              t = 0;
            t < r;
            t += 1
          )
            (s = i[t].replace(/#\S+/g, '').split('=')),
              (n[decodeURIComponent(s[0])] =
                void 0 === s[1] ? void 0 : decodeURIComponent(s[1]) || '')
        return n
      },
      isObject: function (e) {
        return (
          'object' == typeof e &&
          null !== e &&
          e.constructor &&
          e.constructor === Object
        )
      },
      extend: function () {
        for (var e = [], t = arguments.length; t--; ) e[t] = arguments[t]
        for (var i = Object(e[0]), s = 1; s < e.length; s += 1) {
          var a = e[s]
          if (null != a)
            for (
              var r = Object.keys(Object(a)), n = 0, o = r.length;
              n < o;
              n += 1
            ) {
              var l = r[n],
                h = Object.getOwnPropertyDescriptor(a, l)
              void 0 !== h &&
                h.enumerable &&
                (d.isObject(i[l]) && d.isObject(a[l])
                  ? d.extend(i[l], a[l])
                  : !d.isObject(i[l]) && d.isObject(a[l])
                  ? ((i[l] = {}), d.extend(i[l], a[l]))
                  : (i[l] = a[l]))
            }
        }
        return i
      }
    },
    h = {
      touch: !!(
        'ontouchstart' in a ||
        (a.DocumentTouch && i instanceof a.DocumentTouch)
      ),
      pointerEvents:
        !!a.PointerEvent &&
        'maxTouchPoints' in a.navigator &&
        a.navigator.maxTouchPoints >= 0,
      observer: 'MutationObserver' in a || 'WebkitMutationObserver' in a,
      passiveListener: (function () {
        var e = !1
        try {
          var t = Object.defineProperty({}, 'passive', {
            get: function () {
              e = !0
            }
          })
          a.addEventListener('testPassiveListener', null, t)
        } catch (e) {}
        return e
      })(),
      gestures: 'ongesturestart' in a
    },
    p = function (e) {
      void 0 === e && (e = {})
      var t = this
      ;(t.params = e),
        (t.eventsListeners = {}),
        t.params &&
          t.params.on &&
          Object.keys(t.params.on).forEach(function (e) {
            t.on(e, t.params.on[e])
          })
    },
    c = { components: { configurable: !0 } }
  ;(p.prototype.on = function (e, t, i) {
    var s = this
    if ('function' != typeof t) return s
    var a = i ? 'unshift' : 'push'
    return (
      e.split(' ').forEach(function (e) {
        s.eventsListeners[e] || (s.eventsListeners[e] = []),
          s.eventsListeners[e][a](t)
      }),
      s
    )
  }),
    (p.prototype.once = function (e, t, i) {
      var s = this
      if ('function' != typeof t) return s
      function a() {
        for (var i = [], r = arguments.length; r--; ) i[r] = arguments[r]
        s.off(e, a), a.f7proxy && delete a.f7proxy, t.apply(s, i)
      }
      return (a.f7proxy = t), s.on(e, a, i)
    }),
    (p.prototype.off = function (e, t) {
      var i = this
      return i.eventsListeners
        ? (e.split(' ').forEach(function (e) {
            void 0 === t
              ? (i.eventsListeners[e] = [])
              : i.eventsListeners[e] &&
                i.eventsListeners[e].length &&
                i.eventsListeners[e].forEach(function (s, a) {
                  ;(s === t || (s.f7proxy && s.f7proxy === t)) &&
                    i.eventsListeners[e].splice(a, 1)
                })
          }),
          i)
        : i
    }),
    (p.prototype.emit = function () {
      for (var e = [], t = arguments.length; t--; ) e[t] = arguments[t]
      var i,
        s,
        a,
        r = this
      if (!r.eventsListeners) return r
      'string' == typeof e[0] || Array.isArray(e[0])
        ? ((i = e[0]), (s = e.slice(1, e.length)), (a = r))
        : ((i = e[0].events), (s = e[0].data), (a = e[0].context || r))
      var n = Array.isArray(i) ? i : i.split(' ')
      return (
        n.forEach(function (e) {
          if (r.eventsListeners && r.eventsListeners[e]) {
            var t = []
            r.eventsListeners[e].forEach(function (e) {
              t.push(e)
            }),
              t.forEach(function (e) {
                e.apply(a, s)
              })
          }
        }),
        r
      )
    }),
    (p.prototype.useModulesParams = function (e) {
      var t = this
      t.modules &&
        Object.keys(t.modules).forEach(function (i) {
          var s = t.modules[i]
          s.params && d.extend(e, s.params)
        })
    }),
    (p.prototype.useModules = function (e) {
      void 0 === e && (e = {})
      var t = this
      t.modules &&
        Object.keys(t.modules).forEach(function (i) {
          var s = t.modules[i],
            a = e[i] || {}
          s.instance &&
            Object.keys(s.instance).forEach(function (e) {
              var i = s.instance[e]
              t[e] = 'function' == typeof i ? i.bind(t) : i
            }),
            s.on &&
              t.on &&
              Object.keys(s.on).forEach(function (e) {
                t.on(e, s.on[e])
              }),
            s.create && s.create.bind(t)(a)
        })
    }),
    (c.components.set = function (e) {
      this.use && this.use(e)
    }),
    (p.installModule = function (e) {
      for (var t = [], i = arguments.length - 1; i-- > 0; )
        t[i] = arguments[i + 1]
      var s = this
      s.prototype.modules || (s.prototype.modules = {})
      var a = e.name || Object.keys(s.prototype.modules).length + '_' + d.now()
      return (
        (s.prototype.modules[a] = e),
        e.proto &&
          Object.keys(e.proto).forEach(function (t) {
            s.prototype[t] = e.proto[t]
          }),
        e.static &&
          Object.keys(e.static).forEach(function (t) {
            s[t] = e.static[t]
          }),
        e.install && e.install.apply(s, t),
        s
      )
    }),
    (p.use = function (e) {
      for (var t = [], i = arguments.length - 1; i-- > 0; )
        t[i] = arguments[i + 1]
      var s = this
      return Array.isArray(e)
        ? (e.forEach(function (e) {
            return s.installModule(e)
          }),
          s)
        : s.installModule.apply(s, [e].concat(t))
    }),
    Object.defineProperties(p, c)
  var u = {
    updateSize: function () {
      var e,
        t,
        i = this.$el
      ;(e =
        void 0 !== this.params.width ? this.params.width : i[0].clientWidth),
        (t =
          void 0 !== this.params.height
            ? this.params.height
            : i[0].clientHeight),
        (0 === e && this.isHorizontal()) ||
          (0 === t && this.isVertical()) ||
          ((e =
            e -
            parseInt(i.css('padding-left'), 10) -
            parseInt(i.css('padding-right'), 10)),
          (t =
            t -
            parseInt(i.css('padding-top'), 10) -
            parseInt(i.css('padding-bottom'), 10)),
          d.extend(this, {
            width: e,
            height: t,
            size: this.isHorizontal() ? e : t
          }))
    },
    updateSlides: function () {
      var e = this.params,
        t = this.$wrapperEl,
        i = this.size,
        s = this.rtlTranslate,
        r = this.wrongRTL,
        n = this.virtual && e.virtual.enabled,
        o = n ? this.virtual.slides.length : this.slides.length,
        l = t.children('.' + this.params.slideClass),
        h = n ? this.virtual.slides.length : l.length,
        p = [],
        c = [],
        u = []
      function v(t) {
        return !e.cssMode || t !== l.length - 1
      }
      var f = e.slidesOffsetBefore
      'function' == typeof f && (f = e.slidesOffsetBefore.call(this))
      var m = e.slidesOffsetAfter
      'function' == typeof m && (m = e.slidesOffsetAfter.call(this))
      var g = this.snapGrid.length,
        b = this.snapGrid.length,
        w = e.spaceBetween,
        y = -f,
        x = 0,
        E = 0
      if (void 0 !== i) {
        var T, S
        'string' == typeof w &&
          w.indexOf('%') >= 0 &&
          (w = (parseFloat(w.replace('%', '')) / 100) * i),
          (this.virtualSize = -w),
          s
            ? l.css({ marginLeft: '', marginTop: '' })
            : l.css({ marginRight: '', marginBottom: '' }),
          e.slidesPerColumn > 1 &&
            ((T =
              Math.floor(h / e.slidesPerColumn) ===
              h / this.params.slidesPerColumn
                ? h
                : Math.ceil(h / e.slidesPerColumn) * e.slidesPerColumn),
            'auto' !== e.slidesPerView &&
              'row' === e.slidesPerColumnFill &&
              (T = Math.max(T, e.slidesPerView * e.slidesPerColumn)))
        for (
          var C,
            M = e.slidesPerColumn,
            P = T / M,
            z = Math.floor(h / e.slidesPerColumn),
            k = 0;
          k < h;
          k += 1
        ) {
          S = 0
          var $ = l.eq(k)
          if (e.slidesPerColumn > 1) {
            var L = void 0,
              I = void 0,
              D = void 0
            if ('row' === e.slidesPerColumnFill && e.slidesPerGroup > 1) {
              var O = Math.floor(k / (e.slidesPerGroup * e.slidesPerColumn)),
                A = k - e.slidesPerColumn * e.slidesPerGroup * O,
                G =
                  0 === O
                    ? e.slidesPerGroup
                    : Math.min(
                        Math.ceil((h - O * M * e.slidesPerGroup) / M),
                        e.slidesPerGroup
                      )
              ;(L =
                (I = A - (D = Math.floor(A / G)) * G + O * e.slidesPerGroup) +
                (D * T) / M),
                $.css({
                  '-webkit-box-ordinal-group': L,
                  '-moz-box-ordinal-group': L,
                  '-ms-flex-order': L,
                  '-webkit-order': L,
                  order: L
                })
            } else
              'column' === e.slidesPerColumnFill
                ? ((D = k - (I = Math.floor(k / M)) * M),
                  (I > z || (I === z && D === M - 1)) &&
                    (D += 1) >= M &&
                    ((D = 0), (I += 1)))
                : (I = k - (D = Math.floor(k / P)) * P)
            $.css(
              'margin-' + (this.isHorizontal() ? 'top' : 'left'),
              0 !== D && e.spaceBetween && e.spaceBetween + 'px'
            )
          }
          if ('none' !== $.css('display')) {
            if ('auto' === e.slidesPerView) {
              var H = a.getComputedStyle($[0], null),
                B = $[0].style.transform,
                N = $[0].style.webkitTransform
              if (
                (B && ($[0].style.transform = 'none'),
                N && ($[0].style.webkitTransform = 'none'),
                e.roundLengths)
              )
                S = this.isHorizontal() ? $.outerWidth(!0) : $.outerHeight(!0)
              else if (this.isHorizontal()) {
                var X = parseFloat(H.getPropertyValue('width')),
                  V = parseFloat(H.getPropertyValue('padding-left')),
                  Y = parseFloat(H.getPropertyValue('padding-right')),
                  F = parseFloat(H.getPropertyValue('margin-left')),
                  W = parseFloat(H.getPropertyValue('margin-right')),
                  R = H.getPropertyValue('box-sizing')
                S = R && 'border-box' === R ? X + F + W : X + V + Y + F + W
              } else {
                var q = parseFloat(H.getPropertyValue('height')),
                  j = parseFloat(H.getPropertyValue('padding-top')),
                  K = parseFloat(H.getPropertyValue('padding-bottom')),
                  U = parseFloat(H.getPropertyValue('margin-top')),
                  _ = parseFloat(H.getPropertyValue('margin-bottom')),
                  Z = H.getPropertyValue('box-sizing')
                S = Z && 'border-box' === Z ? q + U + _ : q + j + K + U + _
              }
              B && ($[0].style.transform = B),
                N && ($[0].style.webkitTransform = N),
                e.roundLengths && (S = Math.floor(S))
            } else
              (S = (i - (e.slidesPerView - 1) * w) / e.slidesPerView),
                e.roundLengths && (S = Math.floor(S)),
                l[k] &&
                  (this.isHorizontal()
                    ? (l[k].style.width = S + 'px')
                    : (l[k].style.height = S + 'px'))
            l[k] && (l[k].swiperSlideSize = S),
              u.push(S),
              e.centeredSlides
                ? ((y = y + S / 2 + x / 2 + w),
                  0 === x && 0 !== k && (y = y - i / 2 - w),
                  0 === k && (y = y - i / 2 - w),
                  Math.abs(y) < 0.001 && (y = 0),
                  e.roundLengths && (y = Math.floor(y)),
                  E % e.slidesPerGroup == 0 && p.push(y),
                  c.push(y))
                : (e.roundLengths && (y = Math.floor(y)),
                  (E - Math.min(this.params.slidesPerGroupSkip, E)) %
                    this.params.slidesPerGroup ==
                    0 && p.push(y),
                  c.push(y),
                  (y = y + S + w)),
              (this.virtualSize += S + w),
              (x = S),
              (E += 1)
          }
        }
        if (
          ((this.virtualSize = Math.max(this.virtualSize, i) + m),
          s &&
            r &&
            ('slide' === e.effect || 'coverflow' === e.effect) &&
            t.css({ width: this.virtualSize + e.spaceBetween + 'px' }),
          e.setWrapperSize &&
            (this.isHorizontal()
              ? t.css({ width: this.virtualSize + e.spaceBetween + 'px' })
              : t.css({ height: this.virtualSize + e.spaceBetween + 'px' })),
          e.slidesPerColumn > 1 &&
            ((this.virtualSize = (S + e.spaceBetween) * T),
            (this.virtualSize =
              Math.ceil(this.virtualSize / e.slidesPerColumn) - e.spaceBetween),
            this.isHorizontal()
              ? t.css({ width: this.virtualSize + e.spaceBetween + 'px' })
              : t.css({ height: this.virtualSize + e.spaceBetween + 'px' }),
            e.centeredSlides))
        ) {
          C = []
          for (var Q = 0; Q < p.length; Q += 1) {
            var J = p[Q]
            e.roundLengths && (J = Math.floor(J)),
              p[Q] < this.virtualSize + p[0] && C.push(J)
          }
          p = C
        }
        if (!e.centeredSlides) {
          C = []
          for (var ee = 0; ee < p.length; ee += 1) {
            var te = p[ee]
            e.roundLengths && (te = Math.floor(te)),
              p[ee] <= this.virtualSize - i && C.push(te)
          }
          ;(p = C),
            Math.floor(this.virtualSize - i) - Math.floor(p[p.length - 1]) >
              1 && p.push(this.virtualSize - i)
        }
        if (
          (0 === p.length && (p = [0]),
          0 !== e.spaceBetween &&
            (this.isHorizontal()
              ? s
                ? l.filter(v).css({ marginLeft: w + 'px' })
                : l.filter(v).css({ marginRight: w + 'px' })
              : l.filter(v).css({ marginBottom: w + 'px' })),
          e.centeredSlides && e.centeredSlidesBounds)
        ) {
          var ie = 0
          u.forEach(function (t) {
            ie += t + (e.spaceBetween ? e.spaceBetween : 0)
          })
          var se = (ie -= e.spaceBetween) - i
          p = p.map(function (e) {
            return e < 0 ? -f : e > se ? se + m : e
          })
        }
        if (e.centerInsufficientSlides) {
          var ae = 0
          if (
            (u.forEach(function (t) {
              ae += t + (e.spaceBetween ? e.spaceBetween : 0)
            }),
            (ae -= e.spaceBetween) < i)
          ) {
            var re = (i - ae) / 2
            p.forEach(function (e, t) {
              p[t] = e - re
            }),
              c.forEach(function (e, t) {
                c[t] = e + re
              })
          }
        }
        d.extend(this, {
          slides: l,
          snapGrid: p,
          slidesGrid: c,
          slidesSizesGrid: u
        }),
          h !== o && this.emit('slidesLengthChange'),
          p.length !== g &&
            (this.params.watchOverflow && this.checkOverflow(),
            this.emit('snapGridLengthChange')),
          c.length !== b && this.emit('slidesGridLengthChange'),
          (e.watchSlidesProgress || e.watchSlidesVisibility) &&
            this.updateSlidesOffset()
      }
    },
    updateAutoHeight: function (e) {
      var t,
        i = [],
        s = 0
      if (
        ('number' == typeof e
          ? this.setTransition(e)
          : !0 === e && this.setTransition(this.params.speed),
        'auto' !== this.params.slidesPerView && this.params.slidesPerView > 1)
      )
        if (this.params.centeredSlides)
          this.visibleSlides.each(function (e, t) {
            i.push(t)
          })
        else
          for (t = 0; t < Math.ceil(this.params.slidesPerView); t += 1) {
            var a = this.activeIndex + t
            if (a > this.slides.length) break
            i.push(this.slides.eq(a)[0])
          }
      else i.push(this.slides.eq(this.activeIndex)[0])
      for (t = 0; t < i.length; t += 1)
        if (void 0 !== i[t]) {
          var r = i[t].offsetHeight
          s = r > s ? r : s
        }
      s && this.$wrapperEl.css('height', s + 'px')
    },
    updateSlidesOffset: function () {
      for (var e = this.slides, t = 0; t < e.length; t += 1)
        e[t].swiperSlideOffset = this.isHorizontal()
          ? e[t].offsetLeft
          : e[t].offsetTop
    },
    updateSlidesProgress: function (e) {
      void 0 === e && (e = (this && this.translate) || 0)
      var t = this.params,
        i = this.slides,
        s = this.rtlTranslate
      if (0 !== i.length) {
        void 0 === i[0].swiperSlideOffset && this.updateSlidesOffset()
        var a = -e
        s && (a = e),
          i.removeClass(t.slideVisibleClass),
          (this.visibleSlidesIndexes = []),
          (this.visibleSlides = [])
        for (var r = 0; r < i.length; r += 1) {
          var o = i[r],
            l =
              (a +
                (t.centeredSlides ? this.minTranslate() : 0) -
                o.swiperSlideOffset) /
              (o.swiperSlideSize + t.spaceBetween)
          if (t.watchSlidesVisibility || (t.centeredSlides && t.autoHeight)) {
            var d = -(a - o.swiperSlideOffset),
              h = d + this.slidesSizesGrid[r]
            ;((d >= 0 && d < this.size - 1) ||
              (h > 1 && h <= this.size) ||
              (d <= 0 && h >= this.size)) &&
              (this.visibleSlides.push(o),
              this.visibleSlidesIndexes.push(r),
              i.eq(r).addClass(t.slideVisibleClass))
          }
          o.progress = s ? -l : l
        }
        this.visibleSlides = n(this.visibleSlides)
      }
    },
    updateProgress: function (e) {
      if (void 0 === e) {
        var t = this.rtlTranslate ? -1 : 1
        e = (this && this.translate && this.translate * t) || 0
      }
      var i = this.params,
        s = this.maxTranslate() - this.minTranslate(),
        a = this.progress,
        r = this.isBeginning,
        n = this.isEnd,
        o = r,
        l = n
      0 === s
        ? ((a = 0), (r = !0), (n = !0))
        : ((r = (a = (e - this.minTranslate()) / s) <= 0), (n = a >= 1)),
        d.extend(this, { progress: a, isBeginning: r, isEnd: n }),
        (i.watchSlidesProgress ||
          i.watchSlidesVisibility ||
          (i.centeredSlides && i.autoHeight)) &&
          this.updateSlidesProgress(e),
        r && !o && this.emit('reachBeginning toEdge'),
        n && !l && this.emit('reachEnd toEdge'),
        ((o && !r) || (l && !n)) && this.emit('fromEdge'),
        this.emit('progress', a)
    },
    updateSlidesClasses: function () {
      var e,
        t = this.slides,
        i = this.params,
        s = this.$wrapperEl,
        a = this.activeIndex,
        r = this.realIndex,
        n = this.virtual && i.virtual.enabled
      t.removeClass(
        i.slideActiveClass +
          ' ' +
          i.slideNextClass +
          ' ' +
          i.slidePrevClass +
          ' ' +
          i.slideDuplicateActiveClass +
          ' ' +
          i.slideDuplicateNextClass +
          ' ' +
          i.slideDuplicatePrevClass
      ),
        (e = n
          ? this.$wrapperEl.find(
              '.' + i.slideClass + '[data-swiper-slide-index="' + a + '"]'
            )
          : t.eq(a)).addClass(i.slideActiveClass),
        i.loop &&
          (e.hasClass(i.slideDuplicateClass)
            ? s
                .children(
                  '.' +
                    i.slideClass +
                    ':not(.' +
                    i.slideDuplicateClass +
                    ')[data-swiper-slide-index="' +
                    r +
                    '"]'
                )
                .addClass(i.slideDuplicateActiveClass)
            : s
                .children(
                  '.' +
                    i.slideClass +
                    '.' +
                    i.slideDuplicateClass +
                    '[data-swiper-slide-index="' +
                    r +
                    '"]'
                )
                .addClass(i.slideDuplicateActiveClass))
      var o = e
        .nextAll('.' + i.slideClass)
        .eq(0)
        .addClass(i.slideNextClass)
      i.loop && 0 === o.length && (o = t.eq(0)).addClass(i.slideNextClass)
      var l = e
        .prevAll('.' + i.slideClass)
        .eq(0)
        .addClass(i.slidePrevClass)
      i.loop && 0 === l.length && (l = t.eq(-1)).addClass(i.slidePrevClass),
        i.loop &&
          (o.hasClass(i.slideDuplicateClass)
            ? s
                .children(
                  '.' +
                    i.slideClass +
                    ':not(.' +
                    i.slideDuplicateClass +
                    ')[data-swiper-slide-index="' +
                    o.attr('data-swiper-slide-index') +
                    '"]'
                )
                .addClass(i.slideDuplicateNextClass)
            : s
                .children(
                  '.' +
                    i.slideClass +
                    '.' +
                    i.slideDuplicateClass +
                    '[data-swiper-slide-index="' +
                    o.attr('data-swiper-slide-index') +
                    '"]'
                )
                .addClass(i.slideDuplicateNextClass),
          l.hasClass(i.slideDuplicateClass)
            ? s
                .children(
                  '.' +
                    i.slideClass +
                    ':not(.' +
                    i.slideDuplicateClass +
                    ')[data-swiper-slide-index="' +
                    l.attr('data-swiper-slide-index') +
                    '"]'
                )
                .addClass(i.slideDuplicatePrevClass)
            : s
                .children(
                  '.' +
                    i.slideClass +
                    '.' +
                    i.slideDuplicateClass +
                    '[data-swiper-slide-index="' +
                    l.attr('data-swiper-slide-index') +
                    '"]'
                )
                .addClass(i.slideDuplicatePrevClass))
    },
    updateActiveIndex: function (e) {
      var t,
        i = this.rtlTranslate ? this.translate : -this.translate,
        s = this.slidesGrid,
        a = this.snapGrid,
        r = this.params,
        n = this.activeIndex,
        o = this.realIndex,
        l = this.snapIndex,
        h = e
      if (void 0 === h) {
        for (var p = 0; p < s.length; p += 1)
          void 0 !== s[p + 1]
            ? i >= s[p] && i < s[p + 1] - (s[p + 1] - s[p]) / 2
              ? (h = p)
              : i >= s[p] && i < s[p + 1] && (h = p + 1)
            : i >= s[p] && (h = p)
        r.normalizeSlideIndex && (h < 0 || void 0 === h) && (h = 0)
      }
      if (a.indexOf(i) >= 0) t = a.indexOf(i)
      else {
        var c = Math.min(r.slidesPerGroupSkip, h)
        t = c + Math.floor((h - c) / r.slidesPerGroup)
      }
      if ((t >= a.length && (t = a.length - 1), h !== n)) {
        var u = parseInt(
          this.slides.eq(h).attr('data-swiper-slide-index') || h,
          10
        )
        d.extend(this, {
          snapIndex: t,
          realIndex: u,
          previousIndex: n,
          activeIndex: h
        }),
          this.emit('activeIndexChange'),
          this.emit('snapIndexChange'),
          o !== u && this.emit('realIndexChange'),
          (this.initialized || this.params.runCallbacksOnInit) &&
            this.emit('slideChange')
      } else t !== l && ((this.snapIndex = t), this.emit('snapIndexChange'))
    },
    updateClickedSlide: function (e) {
      var t = this.params,
        i = n(e.target).closest('.' + t.slideClass)[0],
        s = !1
      if (i)
        for (var a = 0; a < this.slides.length; a += 1)
          this.slides[a] === i && (s = !0)
      if (!i || !s)
        return (this.clickedSlide = void 0), void (this.clickedIndex = void 0)
      ;(this.clickedSlide = i),
        this.virtual && this.params.virtual.enabled
          ? (this.clickedIndex = parseInt(
              n(i).attr('data-swiper-slide-index'),
              10
            ))
          : (this.clickedIndex = n(i).index()),
        t.slideToClickedSlide &&
          void 0 !== this.clickedIndex &&
          this.clickedIndex !== this.activeIndex &&
          this.slideToClickedSlide()
    }
  }
  var v = {
    getTranslate: function (e) {
      void 0 === e && (e = this.isHorizontal() ? 'x' : 'y')
      var t = this.params,
        i = this.rtlTranslate,
        s = this.translate,
        a = this.$wrapperEl
      if (t.virtualTranslate) return i ? -s : s
      if (t.cssMode) return s
      var r = d.getTranslate(a[0], e)
      return i && (r = -r), r || 0
    },
    setTranslate: function (e, t) {
      var i = this.rtlTranslate,
        s = this.params,
        a = this.$wrapperEl,
        r = this.wrapperEl,
        n = this.progress,
        o = 0,
        l = 0
      this.isHorizontal() ? (o = i ? -e : e) : (l = e),
        s.roundLengths && ((o = Math.floor(o)), (l = Math.floor(l))),
        s.cssMode
          ? (r[this.isHorizontal() ? 'scrollLeft' : 'scrollTop'] =
              this.isHorizontal() ? -o : -l)
          : s.virtualTranslate ||
            a.transform('translate3d(' + o + 'px, ' + l + 'px, 0px)'),
        (this.previousTranslate = this.translate),
        (this.translate = this.isHorizontal() ? o : l)
      var d = this.maxTranslate() - this.minTranslate()
      ;(0 === d ? 0 : (e - this.minTranslate()) / d) !== n &&
        this.updateProgress(e),
        this.emit('setTranslate', this.translate, t)
    },
    minTranslate: function () {
      return -this.snapGrid[0]
    },
    maxTranslate: function () {
      return -this.snapGrid[this.snapGrid.length - 1]
    },
    translateTo: function (e, t, i, s, a) {
      var r
      void 0 === e && (e = 0),
        void 0 === t && (t = this.params.speed),
        void 0 === i && (i = !0),
        void 0 === s && (s = !0)
      var n = this,
        o = n.params,
        l = n.wrapperEl
      if (n.animating && o.preventInteractionOnTransition) return !1
      var d,
        h = n.minTranslate(),
        p = n.maxTranslate()
      if (
        ((d = s && e > h ? h : s && e < p ? p : e),
        n.updateProgress(d),
        o.cssMode)
      ) {
        var c = n.isHorizontal()
        return (
          0 === t
            ? (l[c ? 'scrollLeft' : 'scrollTop'] = -d)
            : l.scrollTo
            ? l.scrollTo(
                (((r = {})[c ? 'left' : 'top'] = -d),
                (r.behavior = 'smooth'),
                r)
              )
            : (l[c ? 'scrollLeft' : 'scrollTop'] = -d),
          !0
        )
      }
      return (
        0 === t
          ? (n.setTransition(0),
            n.setTranslate(d),
            i &&
              (n.emit('beforeTransitionStart', t, a), n.emit('transitionEnd')))
          : (n.setTransition(t),
            n.setTranslate(d),
            i &&
              (n.emit('beforeTransitionStart', t, a),
              n.emit('transitionStart')),
            n.animating ||
              ((n.animating = !0),
              n.onTranslateToWrapperTransitionEnd ||
                (n.onTranslateToWrapperTransitionEnd = function (e) {
                  n &&
                    !n.destroyed &&
                    e.target === this &&
                    (n.$wrapperEl[0].removeEventListener(
                      'transitionend',
                      n.onTranslateToWrapperTransitionEnd
                    ),
                    n.$wrapperEl[0].removeEventListener(
                      'webkitTransitionEnd',
                      n.onTranslateToWrapperTransitionEnd
                    ),
                    (n.onTranslateToWrapperTransitionEnd = null),
                    delete n.onTranslateToWrapperTransitionEnd,
                    i && n.emit('transitionEnd'))
                }),
              n.$wrapperEl[0].addEventListener(
                'transitionend',
                n.onTranslateToWrapperTransitionEnd
              ),
              n.$wrapperEl[0].addEventListener(
                'webkitTransitionEnd',
                n.onTranslateToWrapperTransitionEnd
              ))),
        !0
      )
    }
  }
  var f = {
    setTransition: function (e, t) {
      this.params.cssMode || this.$wrapperEl.transition(e),
        this.emit('setTransition', e, t)
    },
    transitionStart: function (e, t) {
      void 0 === e && (e = !0)
      var i = this.activeIndex,
        s = this.params,
        a = this.previousIndex
      if (!s.cssMode) {
        s.autoHeight && this.updateAutoHeight()
        var r = t
        if (
          (r || (r = i > a ? 'next' : i < a ? 'prev' : 'reset'),
          this.emit('transitionStart'),
          e && i !== a)
        ) {
          if ('reset' === r) return void this.emit('slideResetTransitionStart')
          this.emit('slideChangeTransitionStart'),
            'next' === r
              ? this.emit('slideNextTransitionStart')
              : this.emit('slidePrevTransitionStart')
        }
      }
    },
    transitionEnd: function (e, t) {
      void 0 === e && (e = !0)
      var i = this.activeIndex,
        s = this.previousIndex,
        a = this.params
      if (((this.animating = !1), !a.cssMode)) {
        this.setTransition(0)
        var r = t
        if (
          (r || (r = i > s ? 'next' : i < s ? 'prev' : 'reset'),
          this.emit('transitionEnd'),
          e && i !== s)
        ) {
          if ('reset' === r) return void this.emit('slideResetTransitionEnd')
          this.emit('slideChangeTransitionEnd'),
            'next' === r
              ? this.emit('slideNextTransitionEnd')
              : this.emit('slidePrevTransitionEnd')
        }
      }
    }
  }
  var m = {
    slideTo: function (e, t, i, s) {
      var a
      void 0 === e && (e = 0),
        void 0 === t && (t = this.params.speed),
        void 0 === i && (i = !0)
      var r = this,
        n = e
      n < 0 && (n = 0)
      var o = r.params,
        l = r.snapGrid,
        d = r.slidesGrid,
        h = r.previousIndex,
        p = r.activeIndex,
        c = r.rtlTranslate,
        u = r.wrapperEl
      if (r.animating && o.preventInteractionOnTransition) return !1
      var v = Math.min(r.params.slidesPerGroupSkip, n),
        f = v + Math.floor((n - v) / r.params.slidesPerGroup)
      f >= l.length && (f = l.length - 1),
        (p || o.initialSlide || 0) === (h || 0) &&
          i &&
          r.emit('beforeSlideChangeStart')
      var m,
        g = -l[f]
      if ((r.updateProgress(g), o.normalizeSlideIndex))
        for (var b = 0; b < d.length; b += 1)
          -Math.floor(100 * g) >= Math.floor(100 * d[b]) && (n = b)
      if (r.initialized && n !== p) {
        if (!r.allowSlideNext && g < r.translate && g < r.minTranslate())
          return !1
        if (
          !r.allowSlidePrev &&
          g > r.translate &&
          g > r.maxTranslate() &&
          (p || 0) !== n
        )
          return !1
      }
      if (
        ((m = n > p ? 'next' : n < p ? 'prev' : 'reset'),
        (c && -g === r.translate) || (!c && g === r.translate))
      )
        return (
          r.updateActiveIndex(n),
          o.autoHeight && r.updateAutoHeight(),
          r.updateSlidesClasses(),
          'slide' !== o.effect && r.setTranslate(g),
          'reset' !== m && (r.transitionStart(i, m), r.transitionEnd(i, m)),
          !1
        )
      if (o.cssMode) {
        var w = r.isHorizontal(),
          y = -g
        return (
          c && (y = u.scrollWidth - u.offsetWidth - y),
          0 === t
            ? (u[w ? 'scrollLeft' : 'scrollTop'] = y)
            : u.scrollTo
            ? u.scrollTo(
                (((a = {})[w ? 'left' : 'top'] = y), (a.behavior = 'smooth'), a)
              )
            : (u[w ? 'scrollLeft' : 'scrollTop'] = y),
          !0
        )
      }
      return (
        0 === t
          ? (r.setTransition(0),
            r.setTranslate(g),
            r.updateActiveIndex(n),
            r.updateSlidesClasses(),
            r.emit('beforeTransitionStart', t, s),
            r.transitionStart(i, m),
            r.transitionEnd(i, m))
          : (r.setTransition(t),
            r.setTranslate(g),
            r.updateActiveIndex(n),
            r.updateSlidesClasses(),
            r.emit('beforeTransitionStart', t, s),
            r.transitionStart(i, m),
            r.animating ||
              ((r.animating = !0),
              r.onSlideToWrapperTransitionEnd ||
                (r.onSlideToWrapperTransitionEnd = function (e) {
                  r &&
                    !r.destroyed &&
                    e.target === this &&
                    (r.$wrapperEl[0].removeEventListener(
                      'transitionend',
                      r.onSlideToWrapperTransitionEnd
                    ),
                    r.$wrapperEl[0].removeEventListener(
                      'webkitTransitionEnd',
                      r.onSlideToWrapperTransitionEnd
                    ),
                    (r.onSlideToWrapperTransitionEnd = null),
                    delete r.onSlideToWrapperTransitionEnd,
                    r.transitionEnd(i, m))
                }),
              r.$wrapperEl[0].addEventListener(
                'transitionend',
                r.onSlideToWrapperTransitionEnd
              ),
              r.$wrapperEl[0].addEventListener(
                'webkitTransitionEnd',
                r.onSlideToWrapperTransitionEnd
              ))),
        !0
      )
    },
    slideToLoop: function (e, t, i, s) {
      void 0 === e && (e = 0),
        void 0 === t && (t = this.params.speed),
        void 0 === i && (i = !0)
      var a = e
      return (
        this.params.loop && (a += this.loopedSlides), this.slideTo(a, t, i, s)
      )
    },
    slideNext: function (e, t, i) {
      void 0 === e && (e = this.params.speed), void 0 === t && (t = !0)
      var s = this.params,
        a = this.animating,
        r = this.activeIndex < s.slidesPerGroupSkip ? 1 : s.slidesPerGroup
      if (s.loop) {
        if (a) return !1
        this.loopFix(), (this._clientLeft = this.$wrapperEl[0].clientLeft)
      }
      return this.slideTo(this.activeIndex + r, e, t, i)
    },
    slidePrev: function (e, t, i) {
      void 0 === e && (e = this.params.speed), void 0 === t && (t = !0)
      var s = this.params,
        a = this.animating,
        r = this.snapGrid,
        n = this.slidesGrid,
        o = this.rtlTranslate
      if (s.loop) {
        if (a) return !1
        this.loopFix(), (this._clientLeft = this.$wrapperEl[0].clientLeft)
      }
      function l(e) {
        return e < 0 ? -Math.floor(Math.abs(e)) : Math.floor(e)
      }
      var d,
        h = l(o ? this.translate : -this.translate),
        p = r.map(function (e) {
          return l(e)
        }),
        c =
          (n.map(function (e) {
            return l(e)
          }),
          r[p.indexOf(h)],
          r[p.indexOf(h) - 1])
      return (
        void 0 === c &&
          s.cssMode &&
          r.forEach(function (e) {
            !c && h >= e && (c = e)
          }),
        void 0 !== c && (d = n.indexOf(c)) < 0 && (d = this.activeIndex - 1),
        this.slideTo(d, e, t, i)
      )
    },
    slideReset: function (e, t, i) {
      return (
        void 0 === e && (e = this.params.speed),
        void 0 === t && (t = !0),
        this.slideTo(this.activeIndex, e, t, i)
      )
    },
    slideToClosest: function (e, t, i, s) {
      void 0 === e && (e = this.params.speed),
        void 0 === t && (t = !0),
        void 0 === s && (s = 0.5)
      var a = this.activeIndex,
        r = Math.min(this.params.slidesPerGroupSkip, a),
        n = r + Math.floor((a - r) / this.params.slidesPerGroup),
        o = this.rtlTranslate ? this.translate : -this.translate
      if (o >= this.snapGrid[n]) {
        var l = this.snapGrid[n]
        o - l > (this.snapGrid[n + 1] - l) * s &&
          (a += this.params.slidesPerGroup)
      } else {
        var d = this.snapGrid[n - 1]
        o - d <= (this.snapGrid[n] - d) * s && (a -= this.params.slidesPerGroup)
      }
      return (
        (a = Math.max(a, 0)),
        (a = Math.min(a, this.slidesGrid.length - 1)),
        this.slideTo(a, e, t, i)
      )
    },
    slideToClickedSlide: function () {
      var e,
        t = this,
        i = t.params,
        s = t.$wrapperEl,
        a =
          'auto' === i.slidesPerView
            ? t.slidesPerViewDynamic()
            : i.slidesPerView,
        r = t.clickedIndex
      if (i.loop) {
        if (t.animating) return
        ;(e = parseInt(n(t.clickedSlide).attr('data-swiper-slide-index'), 10)),
          i.centeredSlides
            ? r < t.loopedSlides - a / 2 ||
              r > t.slides.length - t.loopedSlides + a / 2
              ? (t.loopFix(),
                (r = s
                  .children(
                    '.' +
                      i.slideClass +
                      '[data-swiper-slide-index="' +
                      e +
                      '"]:not(.' +
                      i.slideDuplicateClass +
                      ')'
                  )
                  .eq(0)
                  .index()),
                d.nextTick(function () {
                  t.slideTo(r)
                }))
              : t.slideTo(r)
            : r > t.slides.length - a
            ? (t.loopFix(),
              (r = s
                .children(
                  '.' +
                    i.slideClass +
                    '[data-swiper-slide-index="' +
                    e +
                    '"]:not(.' +
                    i.slideDuplicateClass +
                    ')'
                )
                .eq(0)
                .index()),
              d.nextTick(function () {
                t.slideTo(r)
              }))
            : t.slideTo(r)
      } else t.slideTo(r)
    }
  }
  var g = {
    loopCreate: function () {
      var e = this,
        t = e.params,
        s = e.$wrapperEl
      s.children('.' + t.slideClass + '.' + t.slideDuplicateClass).remove()
      var a = s.children('.' + t.slideClass)
      if (t.loopFillGroupWithBlank) {
        var r = t.slidesPerGroup - (a.length % t.slidesPerGroup)
        if (r !== t.slidesPerGroup) {
          for (var o = 0; o < r; o += 1) {
            var l = n(i.createElement('div')).addClass(
              t.slideClass + ' ' + t.slideBlankClass
            )
            s.append(l)
          }
          a = s.children('.' + t.slideClass)
        }
      }
      'auto' !== t.slidesPerView ||
        t.loopedSlides ||
        (t.loopedSlides = a.length),
        (e.loopedSlides = Math.ceil(
          parseFloat(t.loopedSlides || t.slidesPerView, 10)
        )),
        (e.loopedSlides += t.loopAdditionalSlides),
        e.loopedSlides > a.length && (e.loopedSlides = a.length)
      var d = [],
        h = []
      a.each(function (t, i) {
        var s = n(i)
        t < e.loopedSlides && h.push(i),
          t < a.length && t >= a.length - e.loopedSlides && d.push(i),
          s.attr('data-swiper-slide-index', t)
      })
      for (var p = 0; p < h.length; p += 1)
        s.append(n(h[p].cloneNode(!0)).addClass(t.slideDuplicateClass))
      for (var c = d.length - 1; c >= 0; c -= 1)
        s.prepend(n(d[c].cloneNode(!0)).addClass(t.slideDuplicateClass))
    },
    loopFix: function () {
      this.emit('beforeLoopFix')
      var e,
        t = this.activeIndex,
        i = this.slides,
        s = this.loopedSlides,
        a = this.allowSlidePrev,
        r = this.allowSlideNext,
        n = this.snapGrid,
        o = this.rtlTranslate
      ;(this.allowSlidePrev = !0), (this.allowSlideNext = !0)
      var l = -n[t] - this.getTranslate()
      if (t < s)
        (e = i.length - 3 * s + t),
          (e += s),
          this.slideTo(e, 0, !1, !0) &&
            0 !== l &&
            this.setTranslate((o ? -this.translate : this.translate) - l)
      else if (t >= i.length - s) {
        ;(e = -i.length + t + s),
          (e += s),
          this.slideTo(e, 0, !1, !0) &&
            0 !== l &&
            this.setTranslate((o ? -this.translate : this.translate) - l)
      }
      ;(this.allowSlidePrev = a),
        (this.allowSlideNext = r),
        this.emit('loopFix')
    },
    loopDestroy: function () {
      var e = this.$wrapperEl,
        t = this.params,
        i = this.slides
      e
        .children(
          '.' +
            t.slideClass +
            '.' +
            t.slideDuplicateClass +
            ',.' +
            t.slideClass +
            '.' +
            t.slideBlankClass
        )
        .remove(),
        i.removeAttr('data-swiper-slide-index')
    }
  }
  var b = {
    setGrabCursor: function (e) {
      if (
        !(
          h.touch ||
          !this.params.simulateTouch ||
          (this.params.watchOverflow && this.isLocked) ||
          this.params.cssMode
        )
      ) {
        var t = this.el
        ;(t.style.cursor = 'move'),
          (t.style.cursor = e ? '-webkit-grabbing' : '-webkit-grab'),
          (t.style.cursor = e ? '-moz-grabbin' : '-moz-grab'),
          (t.style.cursor = e ? 'grabbing' : 'grab')
      }
    },
    unsetGrabCursor: function () {
      h.touch ||
        (this.params.watchOverflow && this.isLocked) ||
        this.params.cssMode ||
        (this.el.style.cursor = '')
    }
  }
  var w,
    y,
    x,
    E,
    T,
    S,
    C,
    M,
    P,
    z,
    k,
    $,
    L,
    I,
    D,
    O = {
      appendSlide: function (e) {
        var t = this.$wrapperEl,
          i = this.params
        if (
          (i.loop && this.loopDestroy(), 'object' == typeof e && 'length' in e)
        )
          for (var s = 0; s < e.length; s += 1) e[s] && t.append(e[s])
        else t.append(e)
        i.loop && this.loopCreate(), (i.observer && h.observer) || this.update()
      },
      prependSlide: function (e) {
        var t = this.params,
          i = this.$wrapperEl,
          s = this.activeIndex
        t.loop && this.loopDestroy()
        var a = s + 1
        if ('object' == typeof e && 'length' in e) {
          for (var r = 0; r < e.length; r += 1) e[r] && i.prepend(e[r])
          a = s + e.length
        } else i.prepend(e)
        t.loop && this.loopCreate(),
          (t.observer && h.observer) || this.update(),
          this.slideTo(a, 0, !1)
      },
      addSlide: function (e, t) {
        var i = this.$wrapperEl,
          s = this.params,
          a = this.activeIndex
        s.loop &&
          ((a -= this.loopedSlides),
          this.loopDestroy(),
          (this.slides = i.children('.' + s.slideClass)))
        var r = this.slides.length
        if (e <= 0) this.prependSlide(t)
        else if (e >= r) this.appendSlide(t)
        else {
          for (var n = a > e ? a + 1 : a, o = [], l = r - 1; l >= e; l -= 1) {
            var d = this.slides.eq(l)
            d.remove(), o.unshift(d)
          }
          if ('object' == typeof t && 'length' in t) {
            for (var p = 0; p < t.length; p += 1) t[p] && i.append(t[p])
            n = a > e ? a + t.length : a
          } else i.append(t)
          for (var c = 0; c < o.length; c += 1) i.append(o[c])
          s.loop && this.loopCreate(),
            (s.observer && h.observer) || this.update(),
            s.loop
              ? this.slideTo(n + this.loopedSlides, 0, !1)
              : this.slideTo(n, 0, !1)
        }
      },
      removeSlide: function (e) {
        var t = this.params,
          i = this.$wrapperEl,
          s = this.activeIndex
        t.loop &&
          ((s -= this.loopedSlides),
          this.loopDestroy(),
          (this.slides = i.children('.' + t.slideClass)))
        var a,
          r = s
        if ('object' == typeof e && 'length' in e) {
          for (var n = 0; n < e.length; n += 1)
            (a = e[n]),
              this.slides[a] && this.slides.eq(a).remove(),
              a < r && (r -= 1)
          r = Math.max(r, 0)
        } else
          (a = e),
            this.slides[a] && this.slides.eq(a).remove(),
            a < r && (r -= 1),
            (r = Math.max(r, 0))
        t.loop && this.loopCreate(),
          (t.observer && h.observer) || this.update(),
          t.loop
            ? this.slideTo(r + this.loopedSlides, 0, !1)
            : this.slideTo(r, 0, !1)
      },
      removeAllSlides: function () {
        for (var e = [], t = 0; t < this.slides.length; t += 1) e.push(t)
        this.removeSlide(e)
      }
    },
    A =
      ((w = a.navigator.platform),
      (y = a.navigator.userAgent),
      (x = {
        ios: !1,
        android: !1,
        androidChrome: !1,
        desktop: !1,
        iphone: !1,
        ipod: !1,
        ipad: !1,
        edge: !1,
        ie: !1,
        firefox: !1,
        macos: !1,
        windows: !1,
        cordova: !(!a.cordova && !a.phonegap),
        phonegap: !(!a.cordova && !a.phonegap),
        electron: !1
      }),
      (E = a.screen.width),
      (T = a.screen.height),
      (S = y.match(/(Android);?[\s\/]+([\d.]+)?/)),
      (C = y.match(/(iPad).*OS\s([\d_]+)/)),
      (M = y.match(/(iPod)(.*OS\s([\d_]+))?/)),
      (P = !C && y.match(/(iPhone\sOS|iOS)\s([\d_]+)/)),
      (z = y.indexOf('MSIE ') >= 0 || y.indexOf('Trident/') >= 0),
      (k = y.indexOf('Edge/') >= 0),
      ($ = y.indexOf('Gecko/') >= 0 && y.indexOf('Firefox/') >= 0),
      (L = 'Win32' === w),
      (I = y.toLowerCase().indexOf('electron') >= 0),
      (D = 'MacIntel' === w),
      !C &&
        D &&
        h.touch &&
        ((1024 === E && 1366 === T) ||
          (834 === E && 1194 === T) ||
          (834 === E && 1112 === T) ||
          (768 === E && 1024 === T)) &&
        ((C = y.match(/(Version)\/([\d.]+)/)), (D = !1)),
      (x.ie = z),
      (x.edge = k),
      (x.firefox = $),
      S &&
        !L &&
        ((x.os = 'android'),
        (x.osVersion = S[2]),
        (x.android = !0),
        (x.androidChrome = y.toLowerCase().indexOf('chrome') >= 0)),
      (C || P || M) && ((x.os = 'ios'), (x.ios = !0)),
      P && !M && ((x.osVersion = P[2].replace(/_/g, '.')), (x.iphone = !0)),
      C && ((x.osVersion = C[2].replace(/_/g, '.')), (x.ipad = !0)),
      M &&
        ((x.osVersion = M[3] ? M[3].replace(/_/g, '.') : null), (x.ipod = !0)),
      x.ios &&
        x.osVersion &&
        y.indexOf('Version/') >= 0 &&
        '10' === x.osVersion.split('.')[0] &&
        (x.osVersion = y.toLowerCase().split('version/')[1].split(' ')[0]),
      (x.webView =
        !(
          !(P || C || M) ||
          (!y.match(/.*AppleWebKit(?!.*Safari)/i) && !a.navigator.standalone)
        ) ||
        (a.matchMedia && a.matchMedia('(display-mode: standalone)').matches)),
      (x.webview = x.webView),
      (x.standalone = x.webView),
      (x.desktop = !(x.ios || x.android) || I),
      x.desktop &&
        ((x.electron = I),
        (x.macos = D),
        (x.windows = L),
        x.macos && (x.os = 'macos'),
        x.windows && (x.os = 'windows')),
      (x.pixelRatio = a.devicePixelRatio || 1),
      x)
  function G(e) {
    var t = this.touchEventsData,
      s = this.params,
      r = this.touches
    if (!this.animating || !s.preventInteractionOnTransition) {
      var o = e
      o.originalEvent && (o = o.originalEvent)
      var l = n(o.target)
      if (
        ('wrapper' !== s.touchEventsTarget ||
          l.closest(this.wrapperEl).length) &&
        ((t.isTouchEvent = 'touchstart' === o.type),
        (t.isTouchEvent || !('which' in o) || 3 !== o.which) &&
          !(
            (!t.isTouchEvent && 'button' in o && o.button > 0) ||
            (t.isTouched && t.isMoved)
          ))
      )
        if (
          s.noSwiping &&
          l.closest(
            s.noSwipingSelector ? s.noSwipingSelector : '.' + s.noSwipingClass
          )[0]
        )
          this.allowClick = !0
        else if (!s.swipeHandler || l.closest(s.swipeHandler)[0]) {
          ;(r.currentX =
            'touchstart' === o.type ? o.targetTouches[0].pageX : o.pageX),
            (r.currentY =
              'touchstart' === o.type ? o.targetTouches[0].pageY : o.pageY)
          var h = r.currentX,
            p = r.currentY,
            c = s.edgeSwipeDetection || s.iOSEdgeSwipeDetection,
            u = s.edgeSwipeThreshold || s.iOSEdgeSwipeThreshold
          if (!c || !(h <= u || h >= a.screen.width - u)) {
            if (
              (d.extend(t, {
                isTouched: !0,
                isMoved: !1,
                allowTouchCallbacks: !0,
                isScrolling: void 0,
                startMoving: void 0
              }),
              (r.startX = h),
              (r.startY = p),
              (t.touchStartTime = d.now()),
              (this.allowClick = !0),
              this.updateSize(),
              (this.swipeDirection = void 0),
              s.threshold > 0 && (t.allowThresholdMove = !1),
              'touchstart' !== o.type)
            ) {
              var v = !0
              l.is(t.formElements) && (v = !1),
                i.activeElement &&
                  n(i.activeElement).is(t.formElements) &&
                  i.activeElement !== l[0] &&
                  i.activeElement.blur()
              var f = v && this.allowTouchMove && s.touchStartPreventDefault
              ;(s.touchStartForcePreventDefault || f) && o.preventDefault()
            }
            this.emit('touchStart', o)
          }
        }
    }
  }
  function H(e) {
    var t = this.touchEventsData,
      s = this.params,
      a = this.touches,
      r = this.rtlTranslate,
      o = e
    if ((o.originalEvent && (o = o.originalEvent), t.isTouched)) {
      if (!t.isTouchEvent || 'touchmove' === o.type) {
        var l =
            'touchmove' === o.type &&
            o.targetTouches &&
            (o.targetTouches[0] || o.changedTouches[0]),
          h = 'touchmove' === o.type ? l.pageX : o.pageX,
          p = 'touchmove' === o.type ? l.pageY : o.pageY
        if (o.preventedByNestedSwiper)
          return (a.startX = h), void (a.startY = p)
        if (!this.allowTouchMove)
          return (
            (this.allowClick = !1),
            void (
              t.isTouched &&
              (d.extend(a, { startX: h, startY: p, currentX: h, currentY: p }),
              (t.touchStartTime = d.now()))
            )
          )
        if (t.isTouchEvent && s.touchReleaseOnEdges && !s.loop)
          if (this.isVertical()) {
            if (
              (p < a.startY && this.translate <= this.maxTranslate()) ||
              (p > a.startY && this.translate >= this.minTranslate())
            )
              return (t.isTouched = !1), void (t.isMoved = !1)
          } else if (
            (h < a.startX && this.translate <= this.maxTranslate()) ||
            (h > a.startX && this.translate >= this.minTranslate())
          )
            return
        if (
          t.isTouchEvent &&
          i.activeElement &&
          o.target === i.activeElement &&
          n(o.target).is(t.formElements)
        )
          return (t.isMoved = !0), void (this.allowClick = !1)
        if (
          (t.allowTouchCallbacks && this.emit('touchMove', o),
          !(o.targetTouches && o.targetTouches.length > 1))
        ) {
          ;(a.currentX = h), (a.currentY = p)
          var c = a.currentX - a.startX,
            u = a.currentY - a.startY
          if (
            !(
              this.params.threshold &&
              Math.sqrt(Math.pow(c, 2) + Math.pow(u, 2)) < this.params.threshold
            )
          ) {
            var v
            if (void 0 === t.isScrolling)
              (this.isHorizontal() && a.currentY === a.startY) ||
              (this.isVertical() && a.currentX === a.startX)
                ? (t.isScrolling = !1)
                : c * c + u * u >= 25 &&
                  ((v = (180 * Math.atan2(Math.abs(u), Math.abs(c))) / Math.PI),
                  (t.isScrolling = this.isHorizontal()
                    ? v > s.touchAngle
                    : 90 - v > s.touchAngle))
            if (
              (t.isScrolling && this.emit('touchMoveOpposite', o),
              void 0 === t.startMoving &&
                ((a.currentX === a.startX && a.currentY === a.startY) ||
                  (t.startMoving = !0)),
              t.isScrolling)
            )
              t.isTouched = !1
            else if (t.startMoving) {
              ;(this.allowClick = !1),
                !s.cssMode && o.cancelable && o.preventDefault(),
                s.touchMoveStopPropagation && !s.nested && o.stopPropagation(),
                t.isMoved ||
                  (s.loop && this.loopFix(),
                  (t.startTranslate = this.getTranslate()),
                  this.setTransition(0),
                  this.animating &&
                    this.$wrapperEl.trigger(
                      'webkitTransitionEnd transitionend'
                    ),
                  (t.allowMomentumBounce = !1),
                  !s.grabCursor ||
                    (!0 !== this.allowSlideNext &&
                      !0 !== this.allowSlidePrev) ||
                    this.setGrabCursor(!0),
                  this.emit('sliderFirstMove', o)),
                this.emit('sliderMove', o),
                (t.isMoved = !0)
              var f = this.isHorizontal() ? c : u
              ;(a.diff = f),
                (f *= s.touchRatio),
                r && (f = -f),
                (this.swipeDirection = f > 0 ? 'prev' : 'next'),
                (t.currentTranslate = f + t.startTranslate)
              var m = !0,
                g = s.resistanceRatio
              if (
                (s.touchReleaseOnEdges && (g = 0),
                f > 0 && t.currentTranslate > this.minTranslate()
                  ? ((m = !1),
                    s.resistance &&
                      (t.currentTranslate =
                        this.minTranslate() -
                        1 +
                        Math.pow(
                          -this.minTranslate() + t.startTranslate + f,
                          g
                        )))
                  : f < 0 &&
                    t.currentTranslate < this.maxTranslate() &&
                    ((m = !1),
                    s.resistance &&
                      (t.currentTranslate =
                        this.maxTranslate() +
                        1 -
                        Math.pow(
                          this.maxTranslate() - t.startTranslate - f,
                          g
                        ))),
                m && (o.preventedByNestedSwiper = !0),
                !this.allowSlideNext &&
                  'next' === this.swipeDirection &&
                  t.currentTranslate < t.startTranslate &&
                  (t.currentTranslate = t.startTranslate),
                !this.allowSlidePrev &&
                  'prev' === this.swipeDirection &&
                  t.currentTranslate > t.startTranslate &&
                  (t.currentTranslate = t.startTranslate),
                s.threshold > 0)
              ) {
                if (!(Math.abs(f) > s.threshold || t.allowThresholdMove))
                  return void (t.currentTranslate = t.startTranslate)
                if (!t.allowThresholdMove)
                  return (
                    (t.allowThresholdMove = !0),
                    (a.startX = a.currentX),
                    (a.startY = a.currentY),
                    (t.currentTranslate = t.startTranslate),
                    void (a.diff = this.isHorizontal()
                      ? a.currentX - a.startX
                      : a.currentY - a.startY)
                  )
              }
              s.followFinger &&
                !s.cssMode &&
                ((s.freeMode ||
                  s.watchSlidesProgress ||
                  s.watchSlidesVisibility) &&
                  (this.updateActiveIndex(), this.updateSlidesClasses()),
                s.freeMode &&
                  (0 === t.velocities.length &&
                    t.velocities.push({
                      position: a[this.isHorizontal() ? 'startX' : 'startY'],
                      time: t.touchStartTime
                    }),
                  t.velocities.push({
                    position: a[this.isHorizontal() ? 'currentX' : 'currentY'],
                    time: d.now()
                  })),
                this.updateProgress(t.currentTranslate),
                this.setTranslate(t.currentTranslate))
            }
          }
        }
      }
    } else t.startMoving && t.isScrolling && this.emit('touchMoveOpposite', o)
  }
  function B(e) {
    var t = this,
      i = t.touchEventsData,
      s = t.params,
      a = t.touches,
      r = t.rtlTranslate,
      n = t.$wrapperEl,
      o = t.slidesGrid,
      l = t.snapGrid,
      h = e
    if (
      (h.originalEvent && (h = h.originalEvent),
      i.allowTouchCallbacks && t.emit('touchEnd', h),
      (i.allowTouchCallbacks = !1),
      !i.isTouched)
    )
      return (
        i.isMoved && s.grabCursor && t.setGrabCursor(!1),
        (i.isMoved = !1),
        void (i.startMoving = !1)
      )
    s.grabCursor &&
      i.isMoved &&
      i.isTouched &&
      (!0 === t.allowSlideNext || !0 === t.allowSlidePrev) &&
      t.setGrabCursor(!1)
    var p,
      c = d.now(),
      u = c - i.touchStartTime
    if (
      (t.allowClick &&
        (t.updateClickedSlide(h),
        t.emit('tap click', h),
        u < 300 &&
          c - i.lastClickTime < 300 &&
          t.emit('doubleTap doubleClick', h)),
      (i.lastClickTime = d.now()),
      d.nextTick(function () {
        t.destroyed || (t.allowClick = !0)
      }),
      !i.isTouched ||
        !i.isMoved ||
        !t.swipeDirection ||
        0 === a.diff ||
        i.currentTranslate === i.startTranslate)
    )
      return (i.isTouched = !1), (i.isMoved = !1), void (i.startMoving = !1)
    if (
      ((i.isTouched = !1),
      (i.isMoved = !1),
      (i.startMoving = !1),
      (p = s.followFinger
        ? r
          ? t.translate
          : -t.translate
        : -i.currentTranslate),
      !s.cssMode)
    )
      if (s.freeMode) {
        if (p < -t.minTranslate()) return void t.slideTo(t.activeIndex)
        if (p > -t.maxTranslate())
          return void (t.slides.length < l.length
            ? t.slideTo(l.length - 1)
            : t.slideTo(t.slides.length - 1))
        if (s.freeModeMomentum) {
          if (i.velocities.length > 1) {
            var v = i.velocities.pop(),
              f = i.velocities.pop(),
              m = v.position - f.position,
              g = v.time - f.time
            ;(t.velocity = m / g),
              (t.velocity /= 2),
              Math.abs(t.velocity) < s.freeModeMinimumVelocity &&
                (t.velocity = 0),
              (g > 150 || d.now() - v.time > 300) && (t.velocity = 0)
          } else t.velocity = 0
          ;(t.velocity *= s.freeModeMomentumVelocityRatio),
            (i.velocities.length = 0)
          var b = 1e3 * s.freeModeMomentumRatio,
            w = t.velocity * b,
            y = t.translate + w
          r && (y = -y)
          var x,
            E,
            T = !1,
            S = 20 * Math.abs(t.velocity) * s.freeModeMomentumBounceRatio
          if (y < t.maxTranslate())
            s.freeModeMomentumBounce
              ? (y + t.maxTranslate() < -S && (y = t.maxTranslate() - S),
                (x = t.maxTranslate()),
                (T = !0),
                (i.allowMomentumBounce = !0))
              : (y = t.maxTranslate()),
              s.loop && s.centeredSlides && (E = !0)
          else if (y > t.minTranslate())
            s.freeModeMomentumBounce
              ? (y - t.minTranslate() > S && (y = t.minTranslate() + S),
                (x = t.minTranslate()),
                (T = !0),
                (i.allowMomentumBounce = !0))
              : (y = t.minTranslate()),
              s.loop && s.centeredSlides && (E = !0)
          else if (s.freeModeSticky) {
            for (var C, M = 0; M < l.length; M += 1)
              if (l[M] > -y) {
                C = M
                break
              }
            y = -(y =
              Math.abs(l[C] - y) < Math.abs(l[C - 1] - y) ||
              'next' === t.swipeDirection
                ? l[C]
                : l[C - 1])
          }
          if (
            (E &&
              t.once('transitionEnd', function () {
                t.loopFix()
              }),
            0 !== t.velocity)
          ) {
            if (
              ((b = r
                ? Math.abs((-y - t.translate) / t.velocity)
                : Math.abs((y - t.translate) / t.velocity)),
              s.freeModeSticky)
            ) {
              var P = Math.abs((r ? -y : y) - t.translate),
                z = t.slidesSizesGrid[t.activeIndex]
              b = P < z ? s.speed : P < 2 * z ? 1.5 * s.speed : 2.5 * s.speed
            }
          } else if (s.freeModeSticky) return void t.slideToClosest()
          s.freeModeMomentumBounce && T
            ? (t.updateProgress(x),
              t.setTransition(b),
              t.setTranslate(y),
              t.transitionStart(!0, t.swipeDirection),
              (t.animating = !0),
              n.transitionEnd(function () {
                t &&
                  !t.destroyed &&
                  i.allowMomentumBounce &&
                  (t.emit('momentumBounce'),
                  t.setTransition(s.speed),
                  setTimeout(function () {
                    t.setTranslate(x),
                      n.transitionEnd(function () {
                        t && !t.destroyed && t.transitionEnd()
                      })
                  }, 0))
              }))
            : t.velocity
            ? (t.updateProgress(y),
              t.setTransition(b),
              t.setTranslate(y),
              t.transitionStart(!0, t.swipeDirection),
              t.animating ||
                ((t.animating = !0),
                n.transitionEnd(function () {
                  t && !t.destroyed && t.transitionEnd()
                })))
            : t.updateProgress(y),
            t.updateActiveIndex(),
            t.updateSlidesClasses()
        } else if (s.freeModeSticky) return void t.slideToClosest()
        ;(!s.freeModeMomentum || u >= s.longSwipesMs) &&
          (t.updateProgress(), t.updateActiveIndex(), t.updateSlidesClasses())
      } else {
        for (
          var k = 0, $ = t.slidesSizesGrid[0], L = 0;
          L < o.length;
          L += L < s.slidesPerGroupSkip ? 1 : s.slidesPerGroup
        ) {
          var I = L < s.slidesPerGroupSkip - 1 ? 1 : s.slidesPerGroup
          void 0 !== o[L + I]
            ? p >= o[L] && p < o[L + I] && ((k = L), ($ = o[L + I] - o[L]))
            : p >= o[L] && ((k = L), ($ = o[o.length - 1] - o[o.length - 2]))
        }
        var D = (p - o[k]) / $,
          O = k < s.slidesPerGroupSkip - 1 ? 1 : s.slidesPerGroup
        if (u > s.longSwipesMs) {
          if (!s.longSwipes) return void t.slideTo(t.activeIndex)
          'next' === t.swipeDirection &&
            (D >= s.longSwipesRatio ? t.slideTo(k + O) : t.slideTo(k)),
            'prev' === t.swipeDirection &&
              (D > 1 - s.longSwipesRatio ? t.slideTo(k + O) : t.slideTo(k))
        } else {
          if (!s.shortSwipes) return void t.slideTo(t.activeIndex)
          t.navigation &&
          (h.target === t.navigation.nextEl || h.target === t.navigation.prevEl)
            ? h.target === t.navigation.nextEl
              ? t.slideTo(k + O)
              : t.slideTo(k)
            : ('next' === t.swipeDirection && t.slideTo(k + O),
              'prev' === t.swipeDirection && t.slideTo(k))
        }
      }
  }
  function N() {
    var e = this.params,
      t = this.el
    if (!t || 0 !== t.offsetWidth) {
      e.breakpoints && this.setBreakpoint()
      var i = this.allowSlideNext,
        s = this.allowSlidePrev,
        a = this.snapGrid
      ;(this.allowSlideNext = !0),
        (this.allowSlidePrev = !0),
        this.updateSize(),
        this.updateSlides(),
        this.updateSlidesClasses(),
        ('auto' === e.slidesPerView || e.slidesPerView > 1) &&
        this.isEnd &&
        !this.isBeginning &&
        !this.params.centeredSlides
          ? this.slideTo(this.slides.length - 1, 0, !1, !0)
          : this.slideTo(this.activeIndex, 0, !1, !0),
        this.autoplay &&
          this.autoplay.running &&
          this.autoplay.paused &&
          this.autoplay.run(),
        (this.allowSlidePrev = s),
        (this.allowSlideNext = i),
        this.params.watchOverflow && a !== this.snapGrid && this.checkOverflow()
    }
  }
  function X(e) {
    this.allowClick ||
      (this.params.preventClicks && e.preventDefault(),
      this.params.preventClicksPropagation &&
        this.animating &&
        (e.stopPropagation(), e.stopImmediatePropagation()))
  }
  function V() {
    var e = this.wrapperEl,
      t = this.rtlTranslate
    ;(this.previousTranslate = this.translate),
      this.isHorizontal()
        ? (this.translate = t
            ? e.scrollWidth - e.offsetWidth - e.scrollLeft
            : -e.scrollLeft)
        : (this.translate = -e.scrollTop),
      -0 === this.translate && (this.translate = 0),
      this.updateActiveIndex(),
      this.updateSlidesClasses()
    var i = this.maxTranslate() - this.minTranslate()
    ;(0 === i ? 0 : (this.translate - this.minTranslate()) / i) !==
      this.progress &&
      this.updateProgress(t ? -this.translate : this.translate),
      this.emit('setTranslate', this.translate, !1)
  }
  var Y = !1
  function F() {}
  var W = {
      init: !0,
      direction: 'horizontal',
      touchEventsTarget: 'container',
      initialSlide: 0,
      speed: 300,
      cssMode: !1,
      updateOnWindowResize: !0,
      preventInteractionOnTransition: !1,
      edgeSwipeDetection: !1,
      edgeSwipeThreshold: 20,
      freeMode: !1,
      freeModeMomentum: !0,
      freeModeMomentumRatio: 1,
      freeModeMomentumBounce: !0,
      freeModeMomentumBounceRatio: 1,
      freeModeMomentumVelocityRatio: 1,
      freeModeSticky: !1,
      freeModeMinimumVelocity: 0.02,
      autoHeight: !1,
      setWrapperSize: !1,
      virtualTranslate: !1,
      effect: 'slide',
      breakpoints: void 0,
      spaceBetween: 0,
      slidesPerView: 1,
      slidesPerColumn: 1,
      slidesPerColumnFill: 'column',
      slidesPerGroup: 1,
      slidesPerGroupSkip: 0,
      centeredSlides: !1,
      centeredSlidesBounds: !1,
      slidesOffsetBefore: 0,
      slidesOffsetAfter: 0,
      normalizeSlideIndex: !0,
      centerInsufficientSlides: !1,
      watchOverflow: !1,
      roundLengths: !1,
      touchRatio: 1,
      touchAngle: 45,
      simulateTouch: !0,
      shortSwipes: !0,
      longSwipes: !0,
      longSwipesRatio: 0.5,
      longSwipesMs: 300,
      followFinger: !0,
      allowTouchMove: !0,
      threshold: 0,
      touchMoveStopPropagation: !1,
      touchStartPreventDefault: !0,
      touchStartForcePreventDefault: !1,
      touchReleaseOnEdges: !1,
      uniqueNavElements: !0,
      resistance: !0,
      resistanceRatio: 0.85,
      watchSlidesProgress: !1,
      watchSlidesVisibility: !1,
      grabCursor: !1,
      preventClicks: !0,
      preventClicksPropagation: !0,
      slideToClickedSlide: !1,
      preloadImages: !0,
      updateOnImagesReady: !0,
      loop: !1,
      loopAdditionalSlides: 0,
      loopedSlides: null,
      loopFillGroupWithBlank: !1,
      allowSlidePrev: !0,
      allowSlideNext: !0,
      swipeHandler: null,
      noSwiping: !0,
      noSwipingClass: 'swiper-no-swiping',
      noSwipingSelector: null,
      passiveListeners: !0,
      containerModifierClass: 'swiper-container-',
      slideClass: 'swiper-slide',
      slideBlankClass: 'swiper-slide-invisible-blank',
      slideActiveClass: 'swiper-slide-active',
      slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
      slideVisibleClass: 'swiper-slide-visible',
      slideDuplicateClass: 'swiper-slide-duplicate',
      slideNextClass: 'swiper-slide-next',
      slideDuplicateNextClass: 'swiper-slide-duplicate-next',
      slidePrevClass: 'swiper-slide-prev',
      slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
      wrapperClass: 'swiper-wrapper',
      runCallbacksOnInit: !0
    },
    R = {
      update: u,
      translate: v,
      transition: f,
      slide: m,
      loop: g,
      grabCursor: b,
      manipulation: O,
      events: {
        attachEvents: function () {
          var e = this.params,
            t = this.touchEvents,
            s = this.el,
            a = this.wrapperEl
          ;(this.onTouchStart = G.bind(this)),
            (this.onTouchMove = H.bind(this)),
            (this.onTouchEnd = B.bind(this)),
            e.cssMode && (this.onScroll = V.bind(this)),
            (this.onClick = X.bind(this))
          var r = !!e.nested
          if (!h.touch && h.pointerEvents)
            s.addEventListener(t.start, this.onTouchStart, !1),
              i.addEventListener(t.move, this.onTouchMove, r),
              i.addEventListener(t.end, this.onTouchEnd, !1)
          else {
            if (h.touch) {
              var n = !(
                'touchstart' !== t.start ||
                !h.passiveListener ||
                !e.passiveListeners
              ) && { passive: !0, capture: !1 }
              s.addEventListener(t.start, this.onTouchStart, n),
                s.addEventListener(
                  t.move,
                  this.onTouchMove,
                  h.passiveListener ? { passive: !1, capture: r } : r
                ),
                s.addEventListener(t.end, this.onTouchEnd, n),
                t.cancel && s.addEventListener(t.cancel, this.onTouchEnd, n),
                Y || (i.addEventListener('touchstart', F), (Y = !0))
            }
            ;((e.simulateTouch && !A.ios && !A.android) ||
              (e.simulateTouch && !h.touch && A.ios)) &&
              (s.addEventListener('mousedown', this.onTouchStart, !1),
              i.addEventListener('mousemove', this.onTouchMove, r),
              i.addEventListener('mouseup', this.onTouchEnd, !1))
          }
          ;(e.preventClicks || e.preventClicksPropagation) &&
            s.addEventListener('click', this.onClick, !0),
            e.cssMode && a.addEventListener('scroll', this.onScroll),
            e.updateOnWindowResize
              ? this.on(
                  A.ios || A.android
                    ? 'resize orientationchange observerUpdate'
                    : 'resize observerUpdate',
                  N,
                  !0
                )
              : this.on('observerUpdate', N, !0)
        },
        detachEvents: function () {
          var e = this.params,
            t = this.touchEvents,
            s = this.el,
            a = this.wrapperEl,
            r = !!e.nested
          if (!h.touch && h.pointerEvents)
            s.removeEventListener(t.start, this.onTouchStart, !1),
              i.removeEventListener(t.move, this.onTouchMove, r),
              i.removeEventListener(t.end, this.onTouchEnd, !1)
          else {
            if (h.touch) {
              var n = !(
                'onTouchStart' !== t.start ||
                !h.passiveListener ||
                !e.passiveListeners
              ) && { passive: !0, capture: !1 }
              s.removeEventListener(t.start, this.onTouchStart, n),
                s.removeEventListener(t.move, this.onTouchMove, r),
                s.removeEventListener(t.end, this.onTouchEnd, n),
                t.cancel && s.removeEventListener(t.cancel, this.onTouchEnd, n)
            }
            ;((e.simulateTouch && !A.ios && !A.android) ||
              (e.simulateTouch && !h.touch && A.ios)) &&
              (s.removeEventListener('mousedown', this.onTouchStart, !1),
              i.removeEventListener('mousemove', this.onTouchMove, r),
              i.removeEventListener('mouseup', this.onTouchEnd, !1))
          }
          ;(e.preventClicks || e.preventClicksPropagation) &&
            s.removeEventListener('click', this.onClick, !0),
            e.cssMode && a.removeEventListener('scroll', this.onScroll),
            this.off(
              A.ios || A.android
                ? 'resize orientationchange observerUpdate'
                : 'resize observerUpdate',
              N
            )
        }
      },
      breakpoints: {
        setBreakpoint: function () {
          var e = this.activeIndex,
            t = this.initialized,
            i = this.loopedSlides
          void 0 === i && (i = 0)
          var s = this.params,
            a = this.$el,
            r = s.breakpoints
          if (r && (!r || 0 !== Object.keys(r).length)) {
            var n = this.getBreakpoint(r)
            if (n && this.currentBreakpoint !== n) {
              var o = n in r ? r[n] : void 0
              o &&
                [
                  'slidesPerView',
                  'spaceBetween',
                  'slidesPerGroup',
                  'slidesPerGroupSkip',
                  'slidesPerColumn'
                ].forEach(function (e) {
                  var t = o[e]
                  void 0 !== t &&
                    (o[e] =
                      'slidesPerView' !== e || ('AUTO' !== t && 'auto' !== t)
                        ? 'slidesPerView' === e
                          ? parseFloat(t)
                          : parseInt(t, 10)
                        : 'auto')
                })
              var l = o || this.originalParams,
                h = s.slidesPerColumn > 1,
                p = l.slidesPerColumn > 1
              h && !p
                ? a.removeClass(
                    s.containerModifierClass +
                      'multirow ' +
                      s.containerModifierClass +
                      'multirow-column'
                  )
                : !h &&
                  p &&
                  (a.addClass(s.containerModifierClass + 'multirow'),
                  'column' === l.slidesPerColumnFill &&
                    a.addClass(s.containerModifierClass + 'multirow-column'))
              var c = l.direction && l.direction !== s.direction,
                u = s.loop && (l.slidesPerView !== s.slidesPerView || c)
              c && t && this.changeDirection(),
                d.extend(this.params, l),
                d.extend(this, {
                  allowTouchMove: this.params.allowTouchMove,
                  allowSlideNext: this.params.allowSlideNext,
                  allowSlidePrev: this.params.allowSlidePrev
                }),
                (this.currentBreakpoint = n),
                u &&
                  t &&
                  (this.loopDestroy(),
                  this.loopCreate(),
                  this.updateSlides(),
                  this.slideTo(e - i + this.loopedSlides, 0, !1)),
                this.emit('breakpoint', l)
            }
          }
        },
        getBreakpoint: function (e) {
          if (e) {
            var t = !1,
              i = Object.keys(e).map(function (e) {
                if ('string' == typeof e && 0 === e.indexOf('@')) {
                  var t = parseFloat(e.substr(1))
                  return { value: a.innerHeight * t, point: e }
                }
                return { value: e, point: e }
              })
            i.sort(function (e, t) {
              return parseInt(e.value, 10) - parseInt(t.value, 10)
            })
            for (var s = 0; s < i.length; s += 1) {
              var r = i[s],
                n = r.point
              r.value <= a.innerWidth && (t = n)
            }
            return t || 'max'
          }
        }
      },
      checkOverflow: {
        checkOverflow: function () {
          var e = this.params,
            t = this.isLocked,
            i =
              this.slides.length > 0 &&
              e.slidesOffsetBefore +
                e.spaceBetween * (this.slides.length - 1) +
                this.slides[0].offsetWidth * this.slides.length
          e.slidesOffsetBefore && e.slidesOffsetAfter && i
            ? (this.isLocked = i <= this.size)
            : (this.isLocked = 1 === this.snapGrid.length),
            (this.allowSlideNext = !this.isLocked),
            (this.allowSlidePrev = !this.isLocked),
            t !== this.isLocked && this.emit(this.isLocked ? 'lock' : 'unlock'),
            t &&
              t !== this.isLocked &&
              ((this.isEnd = !1), this.navigation && this.navigation.update())
        }
      },
      classes: {
        addClasses: function () {
          var e = this.classNames,
            t = this.params,
            i = this.rtl,
            s = this.$el,
            a = []
          a.push('initialized'),
            a.push(t.direction),
            t.freeMode && a.push('free-mode'),
            t.autoHeight && a.push('autoheight'),
            i && a.push('rtl'),
            t.slidesPerColumn > 1 &&
              (a.push('multirow'),
              'column' === t.slidesPerColumnFill && a.push('multirow-column')),
            A.android && a.push('android'),
            A.ios && a.push('ios'),
            t.cssMode && a.push('css-mode'),
            a.forEach(function (i) {
              e.push(t.containerModifierClass + i)
            }),
            s.addClass(e.join(' '))
        },
        removeClasses: function () {
          var e = this.$el,
            t = this.classNames
          e.removeClass(t.join(' '))
        }
      },
      images: {
        loadImage: function (e, t, i, s, r, o) {
          var l
          function d() {
            o && o()
          }
          n(e).parent('picture')[0] || (e.complete && r)
            ? d()
            : t
            ? (((l = new a.Image()).onload = d),
              (l.onerror = d),
              s && (l.sizes = s),
              i && (l.srcset = i),
              t && (l.src = t))
            : d()
        },
        preloadImages: function () {
          var e = this
          function t() {
            null != e &&
              e &&
              !e.destroyed &&
              (void 0 !== e.imagesLoaded && (e.imagesLoaded += 1),
              e.imagesLoaded === e.imagesToLoad.length &&
                (e.params.updateOnImagesReady && e.update(),
                e.emit('imagesReady')))
          }
          e.imagesToLoad = e.$el.find('img')
          for (var i = 0; i < e.imagesToLoad.length; i += 1) {
            var s = e.imagesToLoad[i]
            e.loadImage(
              s,
              s.currentSrc || s.getAttribute('src'),
              s.srcset || s.getAttribute('srcset'),
              s.sizes || s.getAttribute('sizes'),
              !0,
              t
            )
          }
        }
      }
    },
    q = {},
    j = (function (e) {
      function t() {
        for (var i, s, a, r = [], o = arguments.length; o--; )
          r[o] = arguments[o]
        1 === r.length && r[0].constructor && r[0].constructor === Object
          ? (a = r[0])
          : ((s = (i = r)[0]), (a = i[1])),
          a || (a = {}),
          (a = d.extend({}, a)),
          s && !a.el && (a.el = s),
          e.call(this, a),
          Object.keys(R).forEach(function (e) {
            Object.keys(R[e]).forEach(function (i) {
              t.prototype[i] || (t.prototype[i] = R[e][i])
            })
          })
        var l = this
        void 0 === l.modules && (l.modules = {}),
          Object.keys(l.modules).forEach(function (e) {
            var t = l.modules[e]
            if (t.params) {
              var i = Object.keys(t.params)[0],
                s = t.params[i]
              if ('object' != typeof s || null === s) return
              if (!(i in a) || !('enabled' in s)) return
              !0 === a[i] && (a[i] = { enabled: !0 }),
                'object' != typeof a[i] ||
                  'enabled' in a[i] ||
                  (a[i].enabled = !0),
                a[i] || (a[i] = { enabled: !1 })
            }
          })
        var p = d.extend({}, W)
        l.useModulesParams(p),
          (l.params = d.extend({}, p, q, a)),
          (l.originalParams = d.extend({}, l.params)),
          (l.passedParams = d.extend({}, a)),
          (l.$ = n)
        var c = n(l.params.el)
        if ((s = c[0])) {
          if (c.length > 1) {
            var u = []
            return (
              c.each(function (e, i) {
                var s = d.extend({}, a, { el: i })
                u.push(new t(s))
              }),
              u
            )
          }
          var v, f, m
          return (
            (s.swiper = l),
            c.data('swiper', l),
            s && s.shadowRoot && s.shadowRoot.querySelector
              ? ((v = n(
                  s.shadowRoot.querySelector('.' + l.params.wrapperClass)
                )).children = function (e) {
                  return c.children(e)
                })
              : (v = c.children('.' + l.params.wrapperClass)),
            d.extend(l, {
              $el: c,
              el: s,
              $wrapperEl: v,
              wrapperEl: v[0],
              classNames: [],
              slides: n(),
              slidesGrid: [],
              snapGrid: [],
              slidesSizesGrid: [],
              isHorizontal: function () {
                return 'horizontal' === l.params.direction
              },
              isVertical: function () {
                return 'vertical' === l.params.direction
              },
              rtl:
                'rtl' === s.dir.toLowerCase() || 'rtl' === c.css('direction'),
              rtlTranslate:
                'horizontal' === l.params.direction &&
                ('rtl' === s.dir.toLowerCase() || 'rtl' === c.css('direction')),
              wrongRTL: '-webkit-box' === v.css('display'),
              activeIndex: 0,
              realIndex: 0,
              isBeginning: !0,
              isEnd: !1,
              translate: 0,
              previousTranslate: 0,
              progress: 0,
              velocity: 0,
              animating: !1,
              allowSlideNext: l.params.allowSlideNext,
              allowSlidePrev: l.params.allowSlidePrev,
              touchEvents:
                ((f = ['touchstart', 'touchmove', 'touchend', 'touchcancel']),
                (m = ['mousedown', 'mousemove', 'mouseup']),
                h.pointerEvents &&
                  (m = ['pointerdown', 'pointermove', 'pointerup']),
                (l.touchEventsTouch = {
                  start: f[0],
                  move: f[1],
                  end: f[2],
                  cancel: f[3]
                }),
                (l.touchEventsDesktop = { start: m[0], move: m[1], end: m[2] }),
                h.touch || !l.params.simulateTouch
                  ? l.touchEventsTouch
                  : l.touchEventsDesktop),
              touchEventsData: {
                isTouched: void 0,
                isMoved: void 0,
                allowTouchCallbacks: void 0,
                touchStartTime: void 0,
                isScrolling: void 0,
                currentTranslate: void 0,
                startTranslate: void 0,
                allowThresholdMove: void 0,
                formElements:
                  'input, select, option, textarea, button, video, label',
                lastClickTime: d.now(),
                clickTimeout: void 0,
                velocities: [],
                allowMomentumBounce: void 0,
                isTouchEvent: void 0,
                startMoving: void 0
              },
              allowClick: !0,
              allowTouchMove: l.params.allowTouchMove,
              touches: {
                startX: 0,
                startY: 0,
                currentX: 0,
                currentY: 0,
                diff: 0
              },
              imagesToLoad: [],
              imagesLoaded: 0
            }),
            l.useModules(),
            l.params.init && l.init(),
            l
          )
        }
      }
      e && (t.__proto__ = e),
        (t.prototype = Object.create(e && e.prototype)),
        (t.prototype.constructor = t)
      var i = {
        extendedDefaults: { configurable: !0 },
        defaults: { configurable: !0 },
        Class: { configurable: !0 },
        $: { configurable: !0 }
      }
      return (
        (t.prototype.slidesPerViewDynamic = function () {
          var e = this.params,
            t = this.slides,
            i = this.slidesGrid,
            s = this.size,
            a = this.activeIndex,
            r = 1
          if (e.centeredSlides) {
            for (
              var n, o = t[a].swiperSlideSize, l = a + 1;
              l < t.length;
              l += 1
            )
              t[l] &&
                !n &&
                ((r += 1), (o += t[l].swiperSlideSize) > s && (n = !0))
            for (var d = a - 1; d >= 0; d -= 1)
              t[d] &&
                !n &&
                ((r += 1), (o += t[d].swiperSlideSize) > s && (n = !0))
          } else
            for (var h = a + 1; h < t.length; h += 1)
              i[h] - i[a] < s && (r += 1)
          return r
        }),
        (t.prototype.update = function () {
          var e = this
          if (e && !e.destroyed) {
            var t = e.snapGrid,
              i = e.params
            i.breakpoints && e.setBreakpoint(),
              e.updateSize(),
              e.updateSlides(),
              e.updateProgress(),
              e.updateSlidesClasses(),
              e.params.freeMode
                ? (s(), e.params.autoHeight && e.updateAutoHeight())
                : (('auto' === e.params.slidesPerView ||
                    e.params.slidesPerView > 1) &&
                  e.isEnd &&
                  !e.params.centeredSlides
                    ? e.slideTo(e.slides.length - 1, 0, !1, !0)
                    : e.slideTo(e.activeIndex, 0, !1, !0)) || s(),
              i.watchOverflow && t !== e.snapGrid && e.checkOverflow(),
              e.emit('update')
          }
          function s() {
            var t = e.rtlTranslate ? -1 * e.translate : e.translate,
              i = Math.min(Math.max(t, e.maxTranslate()), e.minTranslate())
            e.setTranslate(i), e.updateActiveIndex(), e.updateSlidesClasses()
          }
        }),
        (t.prototype.changeDirection = function (e, t) {
          void 0 === t && (t = !0)
          var i = this.params.direction
          return (
            e || (e = 'horizontal' === i ? 'vertical' : 'horizontal'),
            e === i ||
              ('horizontal' !== e && 'vertical' !== e) ||
              (this.$el
                .removeClass('' + this.params.containerModifierClass + i)
                .addClass('' + this.params.containerModifierClass + e),
              (this.params.direction = e),
              this.slides.each(function (t, i) {
                'vertical' === e ? (i.style.width = '') : (i.style.height = '')
              }),
              this.emit('changeDirection'),
              t && this.update()),
            this
          )
        }),
        (t.prototype.init = function () {
          this.initialized ||
            (this.emit('beforeInit'),
            this.params.breakpoints && this.setBreakpoint(),
            this.addClasses(),
            this.params.loop && this.loopCreate(),
            this.updateSize(),
            this.updateSlides(),
            this.params.watchOverflow && this.checkOverflow(),
            this.params.grabCursor && this.setGrabCursor(),
            this.params.preloadImages && this.preloadImages(),
            this.params.loop
              ? this.slideTo(
                  this.params.initialSlide + this.loopedSlides,
                  0,
                  this.params.runCallbacksOnInit
                )
              : this.slideTo(
                  this.params.initialSlide,
                  0,
                  this.params.runCallbacksOnInit
                ),
            this.attachEvents(),
            (this.initialized = !0),
            this.emit('init'))
        }),
        (t.prototype.destroy = function (e, t) {
          void 0 === e && (e = !0), void 0 === t && (t = !0)
          var i = this,
            s = i.params,
            a = i.$el,
            r = i.$wrapperEl,
            n = i.slides
          return (
            void 0 === i.params ||
              i.destroyed ||
              (i.emit('beforeDestroy'),
              (i.initialized = !1),
              i.detachEvents(),
              s.loop && i.loopDestroy(),
              t &&
                (i.removeClasses(),
                a.removeAttr('style'),
                r.removeAttr('style'),
                n &&
                  n.length &&
                  n
                    .removeClass(
                      [
                        s.slideVisibleClass,
                        s.slideActiveClass,
                        s.slideNextClass,
                        s.slidePrevClass
                      ].join(' ')
                    )
                    .removeAttr('style')
                    .removeAttr('data-swiper-slide-index')),
              i.emit('destroy'),
              Object.keys(i.eventsListeners).forEach(function (e) {
                i.off(e)
              }),
              !1 !== e &&
                ((i.$el[0].swiper = null),
                i.$el.data('swiper', null),
                d.deleteProps(i)),
              (i.destroyed = !0)),
            null
          )
        }),
        (t.extendDefaults = function (e) {
          d.extend(q, e)
        }),
        (i.extendedDefaults.get = function () {
          return q
        }),
        (i.defaults.get = function () {
          return W
        }),
        (i.Class.get = function () {
          return e
        }),
        (i.$.get = function () {
          return n
        }),
        Object.defineProperties(t, i),
        t
      )
    })(p),
    K = { name: 'device', proto: { device: A }, static: { device: A } },
    U = { name: 'support', proto: { support: h }, static: { support: h } },
    _ = {
      isEdge: !!a.navigator.userAgent.match(/Edge/g),
      isSafari: (function () {
        var e = a.navigator.userAgent.toLowerCase()
        return (
          e.indexOf('safari') >= 0 &&
          e.indexOf('chrome') < 0 &&
          e.indexOf('android') < 0
        )
      })(),
      isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(
        a.navigator.userAgent
      )
    },
    Z = { name: 'browser', proto: { browser: _ }, static: { browser: _ } },
    Q = {
      name: 'resize',
      create: function () {
        var e = this
        d.extend(e, {
          resize: {
            resizeHandler: function () {
              e &&
                !e.destroyed &&
                e.initialized &&
                (e.emit('beforeResize'), e.emit('resize'))
            },
            orientationChangeHandler: function () {
              e && !e.destroyed && e.initialized && e.emit('orientationchange')
            }
          }
        })
      },
      on: {
        init: function () {
          a.addEventListener('resize', this.resize.resizeHandler),
            a.addEventListener(
              'orientationchange',
              this.resize.orientationChangeHandler
            )
        },
        destroy: function () {
          a.removeEventListener('resize', this.resize.resizeHandler),
            a.removeEventListener(
              'orientationchange',
              this.resize.orientationChangeHandler
            )
        }
      }
    },
    J = {
      func: a.MutationObserver || a.WebkitMutationObserver,
      attach: function (e, t) {
        void 0 === t && (t = {})
        var i = this,
          s = new (0, J.func)(function (e) {
            if (1 !== e.length) {
              var t = function () {
                i.emit('observerUpdate', e[0])
              }
              a.requestAnimationFrame
                ? a.requestAnimationFrame(t)
                : a.setTimeout(t, 0)
            } else i.emit('observerUpdate', e[0])
          })
        s.observe(e, {
          attributes: void 0 === t.attributes || t.attributes,
          childList: void 0 === t.childList || t.childList,
          characterData: void 0 === t.characterData || t.characterData
        }),
          i.observer.observers.push(s)
      },
      init: function () {
        if (h.observer && this.params.observer) {
          if (this.params.observeParents)
            for (var e = this.$el.parents(), t = 0; t < e.length; t += 1)
              this.observer.attach(e[t])
          this.observer.attach(this.$el[0], {
            childList: this.params.observeSlideChildren
          }),
            this.observer.attach(this.$wrapperEl[0], { attributes: !1 })
        }
      },
      destroy: function () {
        this.observer.observers.forEach(function (e) {
          e.disconnect()
        }),
          (this.observer.observers = [])
      }
    },
    ee = {
      name: 'observer',
      params: { observer: !1, observeParents: !1, observeSlideChildren: !1 },
      create: function () {
        d.extend(this, {
          observer: {
            init: J.init.bind(this),
            attach: J.attach.bind(this),
            destroy: J.destroy.bind(this),
            observers: []
          }
        })
      },
      on: {
        init: function () {
          this.observer.init()
        },
        destroy: function () {
          this.observer.destroy()
        }
      }
    },
    te = {
      update: function (e) {
        var t = this,
          i = t.params,
          s = i.slidesPerView,
          a = i.slidesPerGroup,
          r = i.centeredSlides,
          n = t.params.virtual,
          o = n.addSlidesBefore,
          l = n.addSlidesAfter,
          h = t.virtual,
          p = h.from,
          c = h.to,
          u = h.slides,
          v = h.slidesGrid,
          f = h.renderSlide,
          m = h.offset
        t.updateActiveIndex()
        var g,
          b,
          w,
          y = t.activeIndex || 0
        ;(g = t.rtlTranslate ? 'right' : t.isHorizontal() ? 'left' : 'top'),
          r
            ? ((b = Math.floor(s / 2) + a + o), (w = Math.floor(s / 2) + a + l))
            : ((b = s + (a - 1) + o), (w = a + l))
        var x = Math.max((y || 0) - w, 0),
          E = Math.min((y || 0) + b, u.length - 1),
          T = (t.slidesGrid[x] || 0) - (t.slidesGrid[0] || 0)
        function S() {
          t.updateSlides(),
            t.updateProgress(),
            t.updateSlidesClasses(),
            t.lazy && t.params.lazy.enabled && t.lazy.load()
        }
        if (
          (d.extend(t.virtual, {
            from: x,
            to: E,
            offset: T,
            slidesGrid: t.slidesGrid
          }),
          p === x && c === E && !e)
        )
          return (
            t.slidesGrid !== v && T !== m && t.slides.css(g, T + 'px'),
            void t.updateProgress()
          )
        if (t.params.virtual.renderExternal)
          return (
            t.params.virtual.renderExternal.call(t, {
              offset: T,
              from: x,
              to: E,
              slides: (function () {
                for (var e = [], t = x; t <= E; t += 1) e.push(u[t])
                return e
              })()
            }),
            void S()
          )
        var C = [],
          M = []
        if (e) t.$wrapperEl.find('.' + t.params.slideClass).remove()
        else
          for (var P = p; P <= c; P += 1)
            (P < x || P > E) &&
              t.$wrapperEl
                .find(
                  '.' +
                    t.params.slideClass +
                    '[data-swiper-slide-index="' +
                    P +
                    '"]'
                )
                .remove()
        for (var z = 0; z < u.length; z += 1)
          z >= x &&
            z <= E &&
            (void 0 === c || e
              ? M.push(z)
              : (z > c && M.push(z), z < p && C.push(z)))
        M.forEach(function (e) {
          t.$wrapperEl.append(f(u[e], e))
        }),
          C.sort(function (e, t) {
            return t - e
          }).forEach(function (e) {
            t.$wrapperEl.prepend(f(u[e], e))
          }),
          t.$wrapperEl.children('.swiper-slide').css(g, T + 'px'),
          S()
      },
      renderSlide: function (e, t) {
        var i = this.params.virtual
        if (i.cache && this.virtual.cache[t]) return this.virtual.cache[t]
        var s = i.renderSlide
          ? n(i.renderSlide.call(this, e, t))
          : n(
              '<div class="' +
                this.params.slideClass +
                '" data-swiper-slide-index="' +
                t +
                '">' +
                e +
                '</div>'
            )
        return (
          s.attr('data-swiper-slide-index') ||
            s.attr('data-swiper-slide-index', t),
          i.cache && (this.virtual.cache[t] = s),
          s
        )
      },
      appendSlide: function (e) {
        if ('object' == typeof e && 'length' in e)
          for (var t = 0; t < e.length; t += 1)
            e[t] && this.virtual.slides.push(e[t])
        else this.virtual.slides.push(e)
        this.virtual.update(!0)
      },
      prependSlide: function (e) {
        var t = this.activeIndex,
          i = t + 1,
          s = 1
        if (Array.isArray(e)) {
          for (var a = 0; a < e.length; a += 1)
            e[a] && this.virtual.slides.unshift(e[a])
          ;(i = t + e.length), (s = e.length)
        } else this.virtual.slides.unshift(e)
        if (this.params.virtual.cache) {
          var r = this.virtual.cache,
            n = {}
          Object.keys(r).forEach(function (e) {
            var t = r[e],
              i = t.attr('data-swiper-slide-index')
            i && t.attr('data-swiper-slide-index', parseInt(i, 10) + 1),
              (n[parseInt(e, 10) + s] = t)
          }),
            (this.virtual.cache = n)
        }
        this.virtual.update(!0), this.slideTo(i, 0)
      },
      removeSlide: function (e) {
        if (null != e) {
          var t = this.activeIndex
          if (Array.isArray(e))
            for (var i = e.length - 1; i >= 0; i -= 1)
              this.virtual.slides.splice(e[i], 1),
                this.params.virtual.cache && delete this.virtual.cache[e[i]],
                e[i] < t && (t -= 1),
                (t = Math.max(t, 0))
          else
            this.virtual.slides.splice(e, 1),
              this.params.virtual.cache && delete this.virtual.cache[e],
              e < t && (t -= 1),
              (t = Math.max(t, 0))
          this.virtual.update(!0), this.slideTo(t, 0)
        }
      },
      removeAllSlides: function () {
        ;(this.virtual.slides = []),
          this.params.virtual.cache && (this.virtual.cache = {}),
          this.virtual.update(!0),
          this.slideTo(0, 0)
      }
    },
    ie = {
      name: 'virtual',
      params: {
        virtual: {
          enabled: !1,
          slides: [],
          cache: !0,
          renderSlide: null,
          renderExternal: null,
          addSlidesBefore: 0,
          addSlidesAfter: 0
        }
      },
      create: function () {
        d.extend(this, {
          virtual: {
            update: te.update.bind(this),
            appendSlide: te.appendSlide.bind(this),
            prependSlide: te.prependSlide.bind(this),
            removeSlide: te.removeSlide.bind(this),
            removeAllSlides: te.removeAllSlides.bind(this),
            renderSlide: te.renderSlide.bind(this),
            slides: this.params.virtual.slides,
            cache: {}
          }
        })
      },
      on: {
        beforeInit: function () {
          if (this.params.virtual.enabled) {
            this.classNames.push(this.params.containerModifierClass + 'virtual')
            var e = { watchSlidesProgress: !0 }
            d.extend(this.params, e),
              d.extend(this.originalParams, e),
              this.params.initialSlide || this.virtual.update()
          }
        },
        setTranslate: function () {
          this.params.virtual.enabled && this.virtual.update()
        }
      }
    },
    se = {
      handle: function (e) {
        var t = this.rtlTranslate,
          s = e
        s.originalEvent && (s = s.originalEvent)
        var r = s.keyCode || s.charCode,
          n = this.params.keyboard.pageUpDown,
          o = n && 33 === r,
          l = n && 34 === r,
          d = 37 === r,
          h = 39 === r,
          p = 38 === r,
          c = 40 === r
        if (
          !this.allowSlideNext &&
          ((this.isHorizontal() && h) || (this.isVertical() && c) || l)
        )
          return !1
        if (
          !this.allowSlidePrev &&
          ((this.isHorizontal() && d) || (this.isVertical() && p) || o)
        )
          return !1
        if (
          !(
            s.shiftKey ||
            s.altKey ||
            s.ctrlKey ||
            s.metaKey ||
            (i.activeElement &&
              i.activeElement.nodeName &&
              ('input' === i.activeElement.nodeName.toLowerCase() ||
                'textarea' === i.activeElement.nodeName.toLowerCase()))
          )
        ) {
          if (
            this.params.keyboard.onlyInViewport &&
            (o || l || d || h || p || c)
          ) {
            var u = !1
            if (
              this.$el.parents('.' + this.params.slideClass).length > 0 &&
              0 === this.$el.parents('.' + this.params.slideActiveClass).length
            )
              return
            var v = a.innerWidth,
              f = a.innerHeight,
              m = this.$el.offset()
            t && (m.left -= this.$el[0].scrollLeft)
            for (
              var g = [
                  [m.left, m.top],
                  [m.left + this.width, m.top],
                  [m.left, m.top + this.height],
                  [m.left + this.width, m.top + this.height]
                ],
                b = 0;
              b < g.length;
              b += 1
            ) {
              var w = g[b]
              w[0] >= 0 && w[0] <= v && w[1] >= 0 && w[1] <= f && (u = !0)
            }
            if (!u) return
          }
          this.isHorizontal()
            ? ((o || l || d || h) &&
                (s.preventDefault ? s.preventDefault() : (s.returnValue = !1)),
              (((l || h) && !t) || ((o || d) && t)) && this.slideNext(),
              (((o || d) && !t) || ((l || h) && t)) && this.slidePrev())
            : ((o || l || p || c) &&
                (s.preventDefault ? s.preventDefault() : (s.returnValue = !1)),
              (l || c) && this.slideNext(),
              (o || p) && this.slidePrev()),
            this.emit('keyPress', r)
        }
      },
      enable: function () {
        this.keyboard.enabled ||
          (n(i).on('keydown', this.keyboard.handle),
          (this.keyboard.enabled = !0))
      },
      disable: function () {
        this.keyboard.enabled &&
          (n(i).off('keydown', this.keyboard.handle),
          (this.keyboard.enabled = !1))
      }
    },
    ae = {
      name: 'keyboard',
      params: { keyboard: { enabled: !1, onlyInViewport: !0, pageUpDown: !0 } },
      create: function () {
        d.extend(this, {
          keyboard: {
            enabled: !1,
            enable: se.enable.bind(this),
            disable: se.disable.bind(this),
            handle: se.handle.bind(this)
          }
        })
      },
      on: {
        init: function () {
          this.params.keyboard.enabled && this.keyboard.enable()
        },
        destroy: function () {
          this.keyboard.enabled && this.keyboard.disable()
        }
      }
    }
  var re = {
      lastScrollTime: d.now(),
      lastEventBeforeSnap: void 0,
      recentWheelEvents: [],
      event: function () {
        return a.navigator.userAgent.indexOf('firefox') > -1
          ? 'DOMMouseScroll'
          : (function () {
              var e = 'onwheel' in i
              if (!e) {
                var t = i.createElement('div')
                t.setAttribute('onwheel', 'return;'),
                  (e = 'function' == typeof t.onwheel)
              }
              return (
                !e &&
                  i.implementation &&
                  i.implementation.hasFeature &&
                  !0 !== i.implementation.hasFeature('', '') &&
                  (e = i.implementation.hasFeature('Events.wheel', '3.0')),
                e
              )
            })()
          ? 'wheel'
          : 'mousewheel'
      },
      normalize: function (e) {
        var t = 0,
          i = 0,
          s = 0,
          a = 0
        return (
          'detail' in e && (i = e.detail),
          'wheelDelta' in e && (i = -e.wheelDelta / 120),
          'wheelDeltaY' in e && (i = -e.wheelDeltaY / 120),
          'wheelDeltaX' in e && (t = -e.wheelDeltaX / 120),
          'axis' in e && e.axis === e.HORIZONTAL_AXIS && ((t = i), (i = 0)),
          (s = 10 * t),
          (a = 10 * i),
          'deltaY' in e && (a = e.deltaY),
          'deltaX' in e && (s = e.deltaX),
          e.shiftKey && !s && ((s = a), (a = 0)),
          (s || a) &&
            e.deltaMode &&
            (1 === e.deltaMode
              ? ((s *= 40), (a *= 40))
              : ((s *= 800), (a *= 800))),
          s && !t && (t = s < 1 ? -1 : 1),
          a && !i && (i = a < 1 ? -1 : 1),
          { spinX: t, spinY: i, pixelX: s, pixelY: a }
        )
      },
      handleMouseEnter: function () {
        this.mouseEntered = !0
      },
      handleMouseLeave: function () {
        this.mouseEntered = !1
      },
      handle: function (e) {
        var t = e,
          i = this,
          s = i.params.mousewheel
        i.params.cssMode && t.preventDefault()
        var a = i.$el
        if (
          ('container' !== i.params.mousewheel.eventsTarged &&
            (a = n(i.params.mousewheel.eventsTarged)),
          !i.mouseEntered && !a[0].contains(t.target) && !s.releaseOnEdges)
        )
          return !0
        t.originalEvent && (t = t.originalEvent)
        var r = 0,
          o = i.rtlTranslate ? -1 : 1,
          l = re.normalize(t)
        if (s.forceToAxis)
          if (i.isHorizontal()) {
            if (!(Math.abs(l.pixelX) > Math.abs(l.pixelY))) return !0
            r = -l.pixelX * o
          } else {
            if (!(Math.abs(l.pixelY) > Math.abs(l.pixelX))) return !0
            r = -l.pixelY
          }
        else
          r =
            Math.abs(l.pixelX) > Math.abs(l.pixelY) ? -l.pixelX * o : -l.pixelY
        if (0 === r) return !0
        if ((s.invert && (r = -r), i.params.freeMode)) {
          var h = {
              time: d.now(),
              delta: Math.abs(r),
              direction: Math.sign(r)
            },
            p = i.mousewheel.lastEventBeforeSnap,
            c =
              p &&
              h.time < p.time + 500 &&
              h.delta <= p.delta &&
              h.direction === p.direction
          if (!c) {
            ;(i.mousewheel.lastEventBeforeSnap = void 0),
              i.params.loop && i.loopFix()
            var u = i.getTranslate() + r * s.sensitivity,
              v = i.isBeginning,
              f = i.isEnd
            if (
              (u >= i.minTranslate() && (u = i.minTranslate()),
              u <= i.maxTranslate() && (u = i.maxTranslate()),
              i.setTransition(0),
              i.setTranslate(u),
              i.updateProgress(),
              i.updateActiveIndex(),
              i.updateSlidesClasses(),
              ((!v && i.isBeginning) || (!f && i.isEnd)) &&
                i.updateSlidesClasses(),
              i.params.freeModeSticky)
            ) {
              clearTimeout(i.mousewheel.timeout),
                (i.mousewheel.timeout = void 0)
              var m = i.mousewheel.recentWheelEvents
              m.length >= 15 && m.shift()
              var g = m.length ? m[m.length - 1] : void 0,
                b = m[0]
              if (
                (m.push(h),
                g && (h.delta > g.delta || h.direction !== g.direction))
              )
                m.splice(0)
              else if (
                m.length >= 15 &&
                h.time - b.time < 500 &&
                b.delta - h.delta >= 1 &&
                h.delta <= 6
              ) {
                var w = r > 0 ? 0.8 : 0.2
                ;(i.mousewheel.lastEventBeforeSnap = h),
                  m.splice(0),
                  (i.mousewheel.timeout = d.nextTick(function () {
                    i.slideToClosest(i.params.speed, !0, void 0, w)
                  }, 0))
              }
              i.mousewheel.timeout ||
                (i.mousewheel.timeout = d.nextTick(function () {
                  ;(i.mousewheel.lastEventBeforeSnap = h),
                    m.splice(0),
                    i.slideToClosest(i.params.speed, !0, void 0, 0.5)
                }, 500))
            }
            if (
              (c || i.emit('scroll', t),
              i.params.autoplay &&
                i.params.autoplayDisableOnInteraction &&
                i.autoplay.stop(),
              u === i.minTranslate() || u === i.maxTranslate())
            )
              return !0
          }
        } else {
          var y = {
              time: d.now(),
              delta: Math.abs(r),
              direction: Math.sign(r),
              raw: e
            },
            x = i.mousewheel.recentWheelEvents
          x.length >= 2 && x.shift()
          var E = x.length ? x[x.length - 1] : void 0
          if (
            (x.push(y),
            E
              ? (y.direction !== E.direction ||
                  y.delta > E.delta ||
                  y.time > E.time + 150) &&
                i.mousewheel.animateSlider(y)
              : i.mousewheel.animateSlider(y),
            i.mousewheel.releaseScroll(y))
          )
            return !0
        }
        return t.preventDefault ? t.preventDefault() : (t.returnValue = !1), !1
      },
      animateSlider: function (e) {
        return (
          (e.delta >= 6 && d.now() - this.mousewheel.lastScrollTime < 60) ||
          (e.direction < 0
            ? (this.isEnd && !this.params.loop) ||
              this.animating ||
              (this.slideNext(), this.emit('scroll', e.raw))
            : (this.isBeginning && !this.params.loop) ||
              this.animating ||
              (this.slidePrev(), this.emit('scroll', e.raw)),
          (this.mousewheel.lastScrollTime = new a.Date().getTime()),
          !1)
        )
      },
      releaseScroll: function (e) {
        var t = this.params.mousewheel
        if (e.direction < 0) {
          if (this.isEnd && !this.params.loop && t.releaseOnEdges) return !0
        } else if (this.isBeginning && !this.params.loop && t.releaseOnEdges)
          return !0
        return !1
      },
      enable: function () {
        var e = re.event()
        if (this.params.cssMode)
          return (
            this.wrapperEl.removeEventListener(e, this.mousewheel.handle), !0
          )
        if (!e) return !1
        if (this.mousewheel.enabled) return !1
        var t = this.$el
        return (
          'container' !== this.params.mousewheel.eventsTarged &&
            (t = n(this.params.mousewheel.eventsTarged)),
          t.on('mouseenter', this.mousewheel.handleMouseEnter),
          t.on('mouseleave', this.mousewheel.handleMouseLeave),
          t.on(e, this.mousewheel.handle),
          (this.mousewheel.enabled = !0),
          !0
        )
      },
      disable: function () {
        var e = re.event()
        if (this.params.cssMode)
          return this.wrapperEl.addEventListener(e, this.mousewheel.handle), !0
        if (!e) return !1
        if (!this.mousewheel.enabled) return !1
        var t = this.$el
        return (
          'container' !== this.params.mousewheel.eventsTarged &&
            (t = n(this.params.mousewheel.eventsTarged)),
          t.off(e, this.mousewheel.handle),
          (this.mousewheel.enabled = !1),
          !0
        )
      }
    },
    ne = {
      update: function () {
        var e = this.params.navigation
        if (!this.params.loop) {
          var t = this.navigation,
            i = t.$nextEl,
            s = t.$prevEl
          s &&
            s.length > 0 &&
            (this.isBeginning
              ? s.addClass(e.disabledClass)
              : s.removeClass(e.disabledClass),
            s[
              this.params.watchOverflow && this.isLocked
                ? 'addClass'
                : 'removeClass'
            ](e.lockClass)),
            i &&
              i.length > 0 &&
              (this.isEnd
                ? i.addClass(e.disabledClass)
                : i.removeClass(e.disabledClass),
              i[
                this.params.watchOverflow && this.isLocked
                  ? 'addClass'
                  : 'removeClass'
              ](e.lockClass))
        }
      },
      onPrevClick: function (e) {
        e.preventDefault(),
          (this.isBeginning && !this.params.loop) || this.slidePrev()
      },
      onNextClick: function (e) {
        e.preventDefault(),
          (this.isEnd && !this.params.loop) || this.slideNext()
      },
      init: function () {
        var e,
          t,
          i = this.params.navigation
        ;(i.nextEl || i.prevEl) &&
          (i.nextEl &&
            ((e = n(i.nextEl)),
            this.params.uniqueNavElements &&
              'string' == typeof i.nextEl &&
              e.length > 1 &&
              1 === this.$el.find(i.nextEl).length &&
              (e = this.$el.find(i.nextEl))),
          i.prevEl &&
            ((t = n(i.prevEl)),
            this.params.uniqueNavElements &&
              'string' == typeof i.prevEl &&
              t.length > 1 &&
              1 === this.$el.find(i.prevEl).length &&
              (t = this.$el.find(i.prevEl))),
          e && e.length > 0 && e.on('click', this.navigation.onNextClick),
          t && t.length > 0 && t.on('click', this.navigation.onPrevClick),
          d.extend(this.navigation, {
            $nextEl: e,
            nextEl: e && e[0],
            $prevEl: t,
            prevEl: t && t[0]
          }))
      },
      destroy: function () {
        var e = this.navigation,
          t = e.$nextEl,
          i = e.$prevEl
        t &&
          t.length &&
          (t.off('click', this.navigation.onNextClick),
          t.removeClass(this.params.navigation.disabledClass)),
          i &&
            i.length &&
            (i.off('click', this.navigation.onPrevClick),
            i.removeClass(this.params.navigation.disabledClass))
      }
    },
    oe = {
      update: function () {
        var e = this.rtl,
          t = this.params.pagination
        if (
          t.el &&
          this.pagination.el &&
          this.pagination.$el &&
          0 !== this.pagination.$el.length
        ) {
          var i,
            s =
              this.virtual && this.params.virtual.enabled
                ? this.virtual.slides.length
                : this.slides.length,
            a = this.pagination.$el,
            r = this.params.loop
              ? Math.ceil(
                  (s - 2 * this.loopedSlides) / this.params.slidesPerGroup
                )
              : this.snapGrid.length
          if (
            (this.params.loop
              ? ((i = Math.ceil(
                  (this.activeIndex - this.loopedSlides) /
                    this.params.slidesPerGroup
                )) >
                  s - 1 - 2 * this.loopedSlides &&
                  (i -= s - 2 * this.loopedSlides),
                i > r - 1 && (i -= r),
                i < 0 &&
                  'bullets' !== this.params.paginationType &&
                  (i = r + i))
              : (i =
                  void 0 !== this.snapIndex
                    ? this.snapIndex
                    : this.activeIndex || 0),
            'bullets' === t.type &&
              this.pagination.bullets &&
              this.pagination.bullets.length > 0)
          ) {
            var o,
              l,
              d,
              h = this.pagination.bullets
            if (
              (t.dynamicBullets &&
                ((this.pagination.bulletSize = h
                  .eq(0)
                  [this.isHorizontal() ? 'outerWidth' : 'outerHeight'](!0)),
                a.css(
                  this.isHorizontal() ? 'width' : 'height',
                  this.pagination.bulletSize * (t.dynamicMainBullets + 4) + 'px'
                ),
                t.dynamicMainBullets > 1 &&
                  void 0 !== this.previousIndex &&
                  ((this.pagination.dynamicBulletIndex +=
                    i - this.previousIndex),
                  this.pagination.dynamicBulletIndex > t.dynamicMainBullets - 1
                    ? (this.pagination.dynamicBulletIndex =
                        t.dynamicMainBullets - 1)
                    : this.pagination.dynamicBulletIndex < 0 &&
                      (this.pagination.dynamicBulletIndex = 0)),
                (o = i - this.pagination.dynamicBulletIndex),
                (d =
                  ((l = o + (Math.min(h.length, t.dynamicMainBullets) - 1)) +
                    o) /
                  2)),
              h.removeClass(
                t.bulletActiveClass +
                  ' ' +
                  t.bulletActiveClass +
                  '-next ' +
                  t.bulletActiveClass +
                  '-next-next ' +
                  t.bulletActiveClass +
                  '-prev ' +
                  t.bulletActiveClass +
                  '-prev-prev ' +
                  t.bulletActiveClass +
                  '-main'
              ),
              a.length > 1)
            )
              h.each(function (e, s) {
                var a = n(s),
                  r = a.index()
                r === i && a.addClass(t.bulletActiveClass),
                  t.dynamicBullets &&
                    (r >= o &&
                      r <= l &&
                      a.addClass(t.bulletActiveClass + '-main'),
                    r === o &&
                      a
                        .prev()
                        .addClass(t.bulletActiveClass + '-prev')
                        .prev()
                        .addClass(t.bulletActiveClass + '-prev-prev'),
                    r === l &&
                      a
                        .next()
                        .addClass(t.bulletActiveClass + '-next')
                        .next()
                        .addClass(t.bulletActiveClass + '-next-next'))
              })
            else {
              var p = h.eq(i),
                c = p.index()
              if ((p.addClass(t.bulletActiveClass), t.dynamicBullets)) {
                for (var u = h.eq(o), v = h.eq(l), f = o; f <= l; f += 1)
                  h.eq(f).addClass(t.bulletActiveClass + '-main')
                if (this.params.loop)
                  if (c >= h.length - t.dynamicMainBullets) {
                    for (var m = t.dynamicMainBullets; m >= 0; m -= 1)
                      h.eq(h.length - m).addClass(t.bulletActiveClass + '-main')
                    h.eq(h.length - t.dynamicMainBullets - 1).addClass(
                      t.bulletActiveClass + '-prev'
                    )
                  } else
                    u
                      .prev()
                      .addClass(t.bulletActiveClass + '-prev')
                      .prev()
                      .addClass(t.bulletActiveClass + '-prev-prev'),
                      v
                        .next()
                        .addClass(t.bulletActiveClass + '-next')
                        .next()
                        .addClass(t.bulletActiveClass + '-next-next')
                else
                  u
                    .prev()
                    .addClass(t.bulletActiveClass + '-prev')
                    .prev()
                    .addClass(t.bulletActiveClass + '-prev-prev'),
                    v
                      .next()
                      .addClass(t.bulletActiveClass + '-next')
                      .next()
                      .addClass(t.bulletActiveClass + '-next-next')
              }
            }
            if (t.dynamicBullets) {
              var g = Math.min(h.length, t.dynamicMainBullets + 4),
                b =
                  (this.pagination.bulletSize * g -
                    this.pagination.bulletSize) /
                    2 -
                  d * this.pagination.bulletSize,
                w = e ? 'right' : 'left'
              h.css(this.isHorizontal() ? w : 'top', b + 'px')
            }
          }
          if (
            ('fraction' === t.type &&
              (a
                .find('.' + t.currentClass)
                .text(t.formatFractionCurrent(i + 1)),
              a.find('.' + t.totalClass).text(t.formatFractionTotal(r))),
            'progressbar' === t.type)
          ) {
            var y
            y = t.progressbarOpposite
              ? this.isHorizontal()
                ? 'vertical'
                : 'horizontal'
              : this.isHorizontal()
              ? 'horizontal'
              : 'vertical'
            var x = (i + 1) / r,
              E = 1,
              T = 1
            'horizontal' === y ? (E = x) : (T = x),
              a
                .find('.' + t.progressbarFillClass)
                .transform(
                  'translate3d(0,0,0) scaleX(' + E + ') scaleY(' + T + ')'
                )
                .transition(this.params.speed)
          }
          'custom' === t.type && t.renderCustom
            ? (a.html(t.renderCustom(this, i + 1, r)),
              this.emit('paginationRender', this, a[0]))
            : this.emit('paginationUpdate', this, a[0]),
            a[
              this.params.watchOverflow && this.isLocked
                ? 'addClass'
                : 'removeClass'
            ](t.lockClass)
        }
      },
      render: function () {
        var e = this.params.pagination
        if (
          e.el &&
          this.pagination.el &&
          this.pagination.$el &&
          0 !== this.pagination.$el.length
        ) {
          var t =
              this.virtual && this.params.virtual.enabled
                ? this.virtual.slides.length
                : this.slides.length,
            i = this.pagination.$el,
            s = ''
          if ('bullets' === e.type) {
            for (
              var a = this.params.loop
                  ? Math.ceil(
                      (t - 2 * this.loopedSlides) / this.params.slidesPerGroup
                    )
                  : this.snapGrid.length,
                r = 0;
              r < a;
              r += 1
            )
              e.renderBullet
                ? (s += e.renderBullet.call(this, r, e.bulletClass))
                : (s +=
                    '<' +
                    e.bulletElement +
                    ' class="' +
                    e.bulletClass +
                    '"></' +
                    e.bulletElement +
                    '>')
            i.html(s), (this.pagination.bullets = i.find('.' + e.bulletClass))
          }
          'fraction' === e.type &&
            ((s = e.renderFraction
              ? e.renderFraction.call(this, e.currentClass, e.totalClass)
              : '<span class="' +
                e.currentClass +
                '"></span> / <span class="' +
                e.totalClass +
                '"></span>'),
            i.html(s)),
            'progressbar' === e.type &&
              ((s = e.renderProgressbar
                ? e.renderProgressbar.call(this, e.progressbarFillClass)
                : '<span class="' + e.progressbarFillClass + '"></span>'),
              i.html(s)),
            'custom' !== e.type &&
              this.emit('paginationRender', this.pagination.$el[0])
        }
      },
      init: function () {
        var e = this,
          t = e.params.pagination
        if (t.el) {
          var i = n(t.el)
          0 !== i.length &&
            (e.params.uniqueNavElements &&
              'string' == typeof t.el &&
              i.length > 1 &&
              (i = e.$el.find(t.el)),
            'bullets' === t.type && t.clickable && i.addClass(t.clickableClass),
            i.addClass(t.modifierClass + t.type),
            'bullets' === t.type &&
              t.dynamicBullets &&
              (i.addClass('' + t.modifierClass + t.type + '-dynamic'),
              (e.pagination.dynamicBulletIndex = 0),
              t.dynamicMainBullets < 1 && (t.dynamicMainBullets = 1)),
            'progressbar' === t.type &&
              t.progressbarOpposite &&
              i.addClass(t.progressbarOppositeClass),
            t.clickable &&
              i.on('click', '.' + t.bulletClass, function (t) {
                t.preventDefault()
                var i = n(this).index() * e.params.slidesPerGroup
                e.params.loop && (i += e.loopedSlides), e.slideTo(i)
              }),
            d.extend(e.pagination, { $el: i, el: i[0] }))
        }
      },
      destroy: function () {
        var e = this.params.pagination
        if (
          e.el &&
          this.pagination.el &&
          this.pagination.$el &&
          0 !== this.pagination.$el.length
        ) {
          var t = this.pagination.$el
          t.removeClass(e.hiddenClass),
            t.removeClass(e.modifierClass + e.type),
            this.pagination.bullets &&
              this.pagination.bullets.removeClass(e.bulletActiveClass),
            e.clickable && t.off('click', '.' + e.bulletClass)
        }
      }
    },
    le = {
      setTranslate: function () {
        if (this.params.scrollbar.el && this.scrollbar.el) {
          var e = this.scrollbar,
            t = this.rtlTranslate,
            i = this.progress,
            s = e.dragSize,
            a = e.trackSize,
            r = e.$dragEl,
            n = e.$el,
            o = this.params.scrollbar,
            l = s,
            d = (a - s) * i
          t
            ? (d = -d) > 0
              ? ((l = s - d), (d = 0))
              : -d + s > a && (l = a + d)
            : d < 0
            ? ((l = s + d), (d = 0))
            : d + s > a && (l = a - d),
            this.isHorizontal()
              ? (r.transform('translate3d(' + d + 'px, 0, 0)'),
                (r[0].style.width = l + 'px'))
              : (r.transform('translate3d(0px, ' + d + 'px, 0)'),
                (r[0].style.height = l + 'px')),
            o.hide &&
              (clearTimeout(this.scrollbar.timeout),
              (n[0].style.opacity = 1),
              (this.scrollbar.timeout = setTimeout(function () {
                ;(n[0].style.opacity = 0), n.transition(400)
              }, 1e3)))
        }
      },
      setTransition: function (e) {
        this.params.scrollbar.el &&
          this.scrollbar.el &&
          this.scrollbar.$dragEl.transition(e)
      },
      updateSize: function () {
        if (this.params.scrollbar.el && this.scrollbar.el) {
          var e = this.scrollbar,
            t = e.$dragEl,
            i = e.$el
          ;(t[0].style.width = ''), (t[0].style.height = '')
          var s,
            a = this.isHorizontal() ? i[0].offsetWidth : i[0].offsetHeight,
            r = this.size / this.virtualSize,
            n = r * (a / this.size)
          ;(s =
            'auto' === this.params.scrollbar.dragSize
              ? a * r
              : parseInt(this.params.scrollbar.dragSize, 10)),
            this.isHorizontal()
              ? (t[0].style.width = s + 'px')
              : (t[0].style.height = s + 'px'),
            (i[0].style.display = r >= 1 ? 'none' : ''),
            this.params.scrollbar.hide && (i[0].style.opacity = 0),
            d.extend(e, {
              trackSize: a,
              divider: r,
              moveDivider: n,
              dragSize: s
            }),
            e.$el[
              this.params.watchOverflow && this.isLocked
                ? 'addClass'
                : 'removeClass'
            ](this.params.scrollbar.lockClass)
        }
      },
      getPointerPosition: function (e) {
        return this.isHorizontal()
          ? 'touchstart' === e.type || 'touchmove' === e.type
            ? e.targetTouches[0].clientX
            : e.clientX
          : 'touchstart' === e.type || 'touchmove' === e.type
          ? e.targetTouches[0].clientY
          : e.clientY
      },
      setDragPosition: function (e) {
        var t,
          i = this.scrollbar,
          s = this.rtlTranslate,
          a = i.$el,
          r = i.dragSize,
          n = i.trackSize,
          o = i.dragStartPos
        ;(t =
          (i.getPointerPosition(e) -
            a.offset()[this.isHorizontal() ? 'left' : 'top'] -
            (null !== o ? o : r / 2)) /
          (n - r)),
          (t = Math.max(Math.min(t, 1), 0)),
          s && (t = 1 - t)
        var l =
          this.minTranslate() + (this.maxTranslate() - this.minTranslate()) * t
        this.updateProgress(l),
          this.setTranslate(l),
          this.updateActiveIndex(),
          this.updateSlidesClasses()
      },
      onDragStart: function (e) {
        var t = this.params.scrollbar,
          i = this.scrollbar,
          s = this.$wrapperEl,
          a = i.$el,
          r = i.$dragEl
        ;(this.scrollbar.isTouched = !0),
          (this.scrollbar.dragStartPos =
            e.target === r[0] || e.target === r
              ? i.getPointerPosition(e) -
                e.target.getBoundingClientRect()[
                  this.isHorizontal() ? 'left' : 'top'
                ]
              : null),
          e.preventDefault(),
          e.stopPropagation(),
          s.transition(100),
          r.transition(100),
          i.setDragPosition(e),
          clearTimeout(this.scrollbar.dragTimeout),
          a.transition(0),
          t.hide && a.css('opacity', 1),
          this.params.cssMode &&
            this.$wrapperEl.css('scroll-snap-type', 'none'),
          this.emit('scrollbarDragStart', e)
      },
      onDragMove: function (e) {
        var t = this.scrollbar,
          i = this.$wrapperEl,
          s = t.$el,
          a = t.$dragEl
        this.scrollbar.isTouched &&
          (e.preventDefault ? e.preventDefault() : (e.returnValue = !1),
          t.setDragPosition(e),
          i.transition(0),
          s.transition(0),
          a.transition(0),
          this.emit('scrollbarDragMove', e))
      },
      onDragEnd: function (e) {
        var t = this.params.scrollbar,
          i = this.scrollbar,
          s = this.$wrapperEl,
          a = i.$el
        this.scrollbar.isTouched &&
          ((this.scrollbar.isTouched = !1),
          this.params.cssMode &&
            (this.$wrapperEl.css('scroll-snap-type', ''), s.transition('')),
          t.hide &&
            (clearTimeout(this.scrollbar.dragTimeout),
            (this.scrollbar.dragTimeout = d.nextTick(function () {
              a.css('opacity', 0), a.transition(400)
            }, 1e3))),
          this.emit('scrollbarDragEnd', e),
          t.snapOnRelease && this.slideToClosest())
      },
      enableDraggable: function () {
        if (this.params.scrollbar.el) {
          var e = this.scrollbar,
            t = this.touchEventsTouch,
            s = this.touchEventsDesktop,
            a = this.params,
            r = e.$el[0],
            n = !(!h.passiveListener || !a.passiveListeners) && {
              passive: !1,
              capture: !1
            },
            o = !(!h.passiveListener || !a.passiveListeners) && {
              passive: !0,
              capture: !1
            }
          h.touch
            ? (r.addEventListener(t.start, this.scrollbar.onDragStart, n),
              r.addEventListener(t.move, this.scrollbar.onDragMove, n),
              r.addEventListener(t.end, this.scrollbar.onDragEnd, o))
            : (r.addEventListener(s.start, this.scrollbar.onDragStart, n),
              i.addEventListener(s.move, this.scrollbar.onDragMove, n),
              i.addEventListener(s.end, this.scrollbar.onDragEnd, o))
        }
      },
      disableDraggable: function () {
        if (this.params.scrollbar.el) {
          var e = this.scrollbar,
            t = this.touchEventsTouch,
            s = this.touchEventsDesktop,
            a = this.params,
            r = e.$el[0],
            n = !(!h.passiveListener || !a.passiveListeners) && {
              passive: !1,
              capture: !1
            },
            o = !(!h.passiveListener || !a.passiveListeners) && {
              passive: !0,
              capture: !1
            }
          h.touch
            ? (r.removeEventListener(t.start, this.scrollbar.onDragStart, n),
              r.removeEventListener(t.move, this.scrollbar.onDragMove, n),
              r.removeEventListener(t.end, this.scrollbar.onDragEnd, o))
            : (r.removeEventListener(s.start, this.scrollbar.onDragStart, n),
              i.removeEventListener(s.move, this.scrollbar.onDragMove, n),
              i.removeEventListener(s.end, this.scrollbar.onDragEnd, o))
        }
      },
      init: function () {
        if (this.params.scrollbar.el) {
          var e = this.scrollbar,
            t = this.$el,
            i = this.params.scrollbar,
            s = n(i.el)
          this.params.uniqueNavElements &&
            'string' == typeof i.el &&
            s.length > 1 &&
            1 === t.find(i.el).length &&
            (s = t.find(i.el))
          var a = s.find('.' + this.params.scrollbar.dragClass)
          0 === a.length &&
            ((a = n(
              '<div class="' + this.params.scrollbar.dragClass + '"></div>'
            )),
            s.append(a)),
            d.extend(e, { $el: s, el: s[0], $dragEl: a, dragEl: a[0] }),
            i.draggable && e.enableDraggable()
        }
      },
      destroy: function () {
        this.scrollbar.disableDraggable()
      }
    },
    de = {
      setTransform: function (e, t) {
        var i = this.rtl,
          s = n(e),
          a = i ? -1 : 1,
          r = s.attr('data-swiper-parallax') || '0',
          o = s.attr('data-swiper-parallax-x'),
          l = s.attr('data-swiper-parallax-y'),
          d = s.attr('data-swiper-parallax-scale'),
          h = s.attr('data-swiper-parallax-opacity')
        if (
          (o || l
            ? ((o = o || '0'), (l = l || '0'))
            : this.isHorizontal()
            ? ((o = r), (l = '0'))
            : ((l = r), (o = '0')),
          (o =
            o.indexOf('%') >= 0
              ? parseInt(o, 10) * t * a + '%'
              : o * t * a + 'px'),
          (l = l.indexOf('%') >= 0 ? parseInt(l, 10) * t + '%' : l * t + 'px'),
          null != h)
        ) {
          var p = h - (h - 1) * (1 - Math.abs(t))
          s[0].style.opacity = p
        }
        if (null == d) s.transform('translate3d(' + o + ', ' + l + ', 0px)')
        else {
          var c = d - (d - 1) * (1 - Math.abs(t))
          s.transform('translate3d(' + o + ', ' + l + ', 0px) scale(' + c + ')')
        }
      },
      setTranslate: function () {
        var e = this,
          t = e.$el,
          i = e.slides,
          s = e.progress,
          a = e.snapGrid
        t
          .children(
            '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'
          )
          .each(function (t, i) {
            e.parallax.setTransform(i, s)
          }),
          i.each(function (t, i) {
            var r = i.progress
            e.params.slidesPerGroup > 1 &&
              'auto' !== e.params.slidesPerView &&
              (r += Math.ceil(t / 2) - s * (a.length - 1)),
              (r = Math.min(Math.max(r, -1), 1)),
              n(i)
                .find(
                  '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'
                )
                .each(function (t, i) {
                  e.parallax.setTransform(i, r)
                })
          })
      },
      setTransition: function (e) {
        void 0 === e && (e = this.params.speed)
        this.$el
          .find(
            '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'
          )
          .each(function (t, i) {
            var s = n(i),
              a = parseInt(s.attr('data-swiper-parallax-duration'), 10) || e
            0 === e && (a = 0), s.transition(a)
          })
      }
    },
    he = {
      getDistanceBetweenTouches: function (e) {
        if (e.targetTouches.length < 2) return 1
        var t = e.targetTouches[0].pageX,
          i = e.targetTouches[0].pageY,
          s = e.targetTouches[1].pageX,
          a = e.targetTouches[1].pageY
        return Math.sqrt(Math.pow(s - t, 2) + Math.pow(a - i, 2))
      },
      onGestureStart: function (e) {
        var t = this.params.zoom,
          i = this.zoom,
          s = i.gesture
        if (
          ((i.fakeGestureTouched = !1), (i.fakeGestureMoved = !1), !h.gestures)
        ) {
          if (
            'touchstart' !== e.type ||
            ('touchstart' === e.type && e.targetTouches.length < 2)
          )
            return
          ;(i.fakeGestureTouched = !0),
            (s.scaleStart = he.getDistanceBetweenTouches(e))
        }
        ;(s.$slideEl && s.$slideEl.length) ||
        ((s.$slideEl = n(e.target).closest('.' + this.params.slideClass)),
        0 === s.$slideEl.length &&
          (s.$slideEl = this.slides.eq(this.activeIndex)),
        (s.$imageEl = s.$slideEl.find(
          'img, svg, canvas, picture, .swiper-zoom-target'
        )),
        (s.$imageWrapEl = s.$imageEl.parent('.' + t.containerClass)),
        (s.maxRatio = s.$imageWrapEl.attr('data-swiper-zoom') || t.maxRatio),
        0 !== s.$imageWrapEl.length)
          ? (s.$imageEl && s.$imageEl.transition(0), (this.zoom.isScaling = !0))
          : (s.$imageEl = void 0)
      },
      onGestureChange: function (e) {
        var t = this.params.zoom,
          i = this.zoom,
          s = i.gesture
        if (!h.gestures) {
          if (
            'touchmove' !== e.type ||
            ('touchmove' === e.type && e.targetTouches.length < 2)
          )
            return
          ;(i.fakeGestureMoved = !0),
            (s.scaleMove = he.getDistanceBetweenTouches(e))
        }
        s.$imageEl &&
          0 !== s.$imageEl.length &&
          ((i.scale = h.gestures
            ? e.scale * i.currentScale
            : (s.scaleMove / s.scaleStart) * i.currentScale),
          i.scale > s.maxRatio &&
            (i.scale =
              s.maxRatio - 1 + Math.pow(i.scale - s.maxRatio + 1, 0.5)),
          i.scale < t.minRatio &&
            (i.scale =
              t.minRatio + 1 - Math.pow(t.minRatio - i.scale + 1, 0.5)),
          s.$imageEl.transform('translate3d(0,0,0) scale(' + i.scale + ')'))
      },
      onGestureEnd: function (e) {
        var t = this.params.zoom,
          i = this.zoom,
          s = i.gesture
        if (!h.gestures) {
          if (!i.fakeGestureTouched || !i.fakeGestureMoved) return
          if (
            'touchend' !== e.type ||
            ('touchend' === e.type && e.changedTouches.length < 2 && !A.android)
          )
            return
          ;(i.fakeGestureTouched = !1), (i.fakeGestureMoved = !1)
        }
        s.$imageEl &&
          0 !== s.$imageEl.length &&
          ((i.scale = Math.max(Math.min(i.scale, s.maxRatio), t.minRatio)),
          s.$imageEl
            .transition(this.params.speed)
            .transform('translate3d(0,0,0) scale(' + i.scale + ')'),
          (i.currentScale = i.scale),
          (i.isScaling = !1),
          1 === i.scale && (s.$slideEl = void 0))
      },
      onTouchStart: function (e) {
        var t = this.zoom,
          i = t.gesture,
          s = t.image
        i.$imageEl &&
          0 !== i.$imageEl.length &&
          (s.isTouched ||
            (A.android && e.cancelable && e.preventDefault(),
            (s.isTouched = !0),
            (s.touchesStart.x =
              'touchstart' === e.type ? e.targetTouches[0].pageX : e.pageX),
            (s.touchesStart.y =
              'touchstart' === e.type ? e.targetTouches[0].pageY : e.pageY)))
      },
      onTouchMove: function (e) {
        var t = this.zoom,
          i = t.gesture,
          s = t.image,
          a = t.velocity
        if (
          i.$imageEl &&
          0 !== i.$imageEl.length &&
          ((this.allowClick = !1), s.isTouched && i.$slideEl)
        ) {
          s.isMoved ||
            ((s.width = i.$imageEl[0].offsetWidth),
            (s.height = i.$imageEl[0].offsetHeight),
            (s.startX = d.getTranslate(i.$imageWrapEl[0], 'x') || 0),
            (s.startY = d.getTranslate(i.$imageWrapEl[0], 'y') || 0),
            (i.slideWidth = i.$slideEl[0].offsetWidth),
            (i.slideHeight = i.$slideEl[0].offsetHeight),
            i.$imageWrapEl.transition(0),
            this.rtl && ((s.startX = -s.startX), (s.startY = -s.startY)))
          var r = s.width * t.scale,
            n = s.height * t.scale
          if (!(r < i.slideWidth && n < i.slideHeight)) {
            if (
              ((s.minX = Math.min(i.slideWidth / 2 - r / 2, 0)),
              (s.maxX = -s.minX),
              (s.minY = Math.min(i.slideHeight / 2 - n / 2, 0)),
              (s.maxY = -s.minY),
              (s.touchesCurrent.x =
                'touchmove' === e.type ? e.targetTouches[0].pageX : e.pageX),
              (s.touchesCurrent.y =
                'touchmove' === e.type ? e.targetTouches[0].pageY : e.pageY),
              !s.isMoved && !t.isScaling)
            ) {
              if (
                this.isHorizontal() &&
                ((Math.floor(s.minX) === Math.floor(s.startX) &&
                  s.touchesCurrent.x < s.touchesStart.x) ||
                  (Math.floor(s.maxX) === Math.floor(s.startX) &&
                    s.touchesCurrent.x > s.touchesStart.x))
              )
                return void (s.isTouched = !1)
              if (
                !this.isHorizontal() &&
                ((Math.floor(s.minY) === Math.floor(s.startY) &&
                  s.touchesCurrent.y < s.touchesStart.y) ||
                  (Math.floor(s.maxY) === Math.floor(s.startY) &&
                    s.touchesCurrent.y > s.touchesStart.y))
              )
                return void (s.isTouched = !1)
            }
            e.cancelable && e.preventDefault(),
              e.stopPropagation(),
              (s.isMoved = !0),
              (s.currentX = s.touchesCurrent.x - s.touchesStart.x + s.startX),
              (s.currentY = s.touchesCurrent.y - s.touchesStart.y + s.startY),
              s.currentX < s.minX &&
                (s.currentX =
                  s.minX + 1 - Math.pow(s.minX - s.currentX + 1, 0.8)),
              s.currentX > s.maxX &&
                (s.currentX =
                  s.maxX - 1 + Math.pow(s.currentX - s.maxX + 1, 0.8)),
              s.currentY < s.minY &&
                (s.currentY =
                  s.minY + 1 - Math.pow(s.minY - s.currentY + 1, 0.8)),
              s.currentY > s.maxY &&
                (s.currentY =
                  s.maxY - 1 + Math.pow(s.currentY - s.maxY + 1, 0.8)),
              a.prevPositionX || (a.prevPositionX = s.touchesCurrent.x),
              a.prevPositionY || (a.prevPositionY = s.touchesCurrent.y),
              a.prevTime || (a.prevTime = Date.now()),
              (a.x =
                (s.touchesCurrent.x - a.prevPositionX) /
                (Date.now() - a.prevTime) /
                2),
              (a.y =
                (s.touchesCurrent.y - a.prevPositionY) /
                (Date.now() - a.prevTime) /
                2),
              Math.abs(s.touchesCurrent.x - a.prevPositionX) < 2 && (a.x = 0),
              Math.abs(s.touchesCurrent.y - a.prevPositionY) < 2 && (a.y = 0),
              (a.prevPositionX = s.touchesCurrent.x),
              (a.prevPositionY = s.touchesCurrent.y),
              (a.prevTime = Date.now()),
              i.$imageWrapEl.transform(
                'translate3d(' + s.currentX + 'px, ' + s.currentY + 'px,0)'
              )
          }
        }
      },
      onTouchEnd: function () {
        var e = this.zoom,
          t = e.gesture,
          i = e.image,
          s = e.velocity
        if (t.$imageEl && 0 !== t.$imageEl.length) {
          if (!i.isTouched || !i.isMoved)
            return (i.isTouched = !1), void (i.isMoved = !1)
          ;(i.isTouched = !1), (i.isMoved = !1)
          var a = 300,
            r = 300,
            n = s.x * a,
            o = i.currentX + n,
            l = s.y * r,
            d = i.currentY + l
          0 !== s.x && (a = Math.abs((o - i.currentX) / s.x)),
            0 !== s.y && (r = Math.abs((d - i.currentY) / s.y))
          var h = Math.max(a, r)
          ;(i.currentX = o), (i.currentY = d)
          var p = i.width * e.scale,
            c = i.height * e.scale
          ;(i.minX = Math.min(t.slideWidth / 2 - p / 2, 0)),
            (i.maxX = -i.minX),
            (i.minY = Math.min(t.slideHeight / 2 - c / 2, 0)),
            (i.maxY = -i.minY),
            (i.currentX = Math.max(Math.min(i.currentX, i.maxX), i.minX)),
            (i.currentY = Math.max(Math.min(i.currentY, i.maxY), i.minY)),
            t.$imageWrapEl
              .transition(h)
              .transform(
                'translate3d(' + i.currentX + 'px, ' + i.currentY + 'px,0)'
              )
        }
      },
      onTransitionEnd: function () {
        var e = this.zoom,
          t = e.gesture
        t.$slideEl &&
          this.previousIndex !== this.activeIndex &&
          (t.$imageEl && t.$imageEl.transform('translate3d(0,0,0) scale(1)'),
          t.$imageWrapEl && t.$imageWrapEl.transform('translate3d(0,0,0)'),
          (e.scale = 1),
          (e.currentScale = 1),
          (t.$slideEl = void 0),
          (t.$imageEl = void 0),
          (t.$imageWrapEl = void 0))
      },
      toggle: function (e) {
        var t = this.zoom
        t.scale && 1 !== t.scale ? t.out() : t.in(e)
      },
      in: function (e) {
        var t,
          i,
          s,
          a,
          r,
          n,
          o,
          l,
          d,
          h,
          p,
          c,
          u,
          v,
          f,
          m,
          g = this.zoom,
          b = this.params.zoom,
          w = g.gesture,
          y = g.image
        ;(w.$slideEl ||
          (this.params.virtual && this.params.virtual.enabled && this.virtual
            ? (w.$slideEl = this.$wrapperEl.children(
                '.' + this.params.slideActiveClass
              ))
            : (w.$slideEl = this.slides.eq(this.activeIndex)),
          (w.$imageEl = w.$slideEl.find(
            'img, svg, canvas, picture, .swiper-zoom-target'
          )),
          (w.$imageWrapEl = w.$imageEl.parent('.' + b.containerClass))),
        w.$imageEl && 0 !== w.$imageEl.length) &&
          (w.$slideEl.addClass('' + b.zoomedSlideClass),
          void 0 === y.touchesStart.x && e
            ? ((t =
                'touchend' === e.type ? e.changedTouches[0].pageX : e.pageX),
              (i = 'touchend' === e.type ? e.changedTouches[0].pageY : e.pageY))
            : ((t = y.touchesStart.x), (i = y.touchesStart.y)),
          (g.scale = w.$imageWrapEl.attr('data-swiper-zoom') || b.maxRatio),
          (g.currentScale =
            w.$imageWrapEl.attr('data-swiper-zoom') || b.maxRatio),
          e
            ? ((f = w.$slideEl[0].offsetWidth),
              (m = w.$slideEl[0].offsetHeight),
              (s = w.$slideEl.offset().left + f / 2 - t),
              (a = w.$slideEl.offset().top + m / 2 - i),
              (o = w.$imageEl[0].offsetWidth),
              (l = w.$imageEl[0].offsetHeight),
              (d = o * g.scale),
              (h = l * g.scale),
              (u = -(p = Math.min(f / 2 - d / 2, 0))),
              (v = -(c = Math.min(m / 2 - h / 2, 0))),
              (r = s * g.scale) < p && (r = p),
              r > u && (r = u),
              (n = a * g.scale) < c && (n = c),
              n > v && (n = v))
            : ((r = 0), (n = 0)),
          w.$imageWrapEl
            .transition(300)
            .transform('translate3d(' + r + 'px, ' + n + 'px,0)'),
          w.$imageEl
            .transition(300)
            .transform('translate3d(0,0,0) scale(' + g.scale + ')'))
      },
      out: function () {
        var e = this.zoom,
          t = this.params.zoom,
          i = e.gesture
        i.$slideEl ||
          (this.params.virtual && this.params.virtual.enabled && this.virtual
            ? (i.$slideEl = this.$wrapperEl.children(
                '.' + this.params.slideActiveClass
              ))
            : (i.$slideEl = this.slides.eq(this.activeIndex)),
          (i.$imageEl = i.$slideEl.find(
            'img, svg, canvas, picture, .swiper-zoom-target'
          )),
          (i.$imageWrapEl = i.$imageEl.parent('.' + t.containerClass))),
          i.$imageEl &&
            0 !== i.$imageEl.length &&
            ((e.scale = 1),
            (e.currentScale = 1),
            i.$imageWrapEl.transition(300).transform('translate3d(0,0,0)'),
            i.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)'),
            i.$slideEl.removeClass('' + t.zoomedSlideClass),
            (i.$slideEl = void 0))
      },
      enable: function () {
        var e = this.zoom
        if (!e.enabled) {
          e.enabled = !0
          var t = !(
              'touchstart' !== this.touchEvents.start ||
              !h.passiveListener ||
              !this.params.passiveListeners
            ) && { passive: !0, capture: !1 },
            i = !h.passiveListener || { passive: !1, capture: !0 },
            s = '.' + this.params.slideClass
          h.gestures
            ? (this.$wrapperEl.on('gesturestart', s, e.onGestureStart, t),
              this.$wrapperEl.on('gesturechange', s, e.onGestureChange, t),
              this.$wrapperEl.on('gestureend', s, e.onGestureEnd, t))
            : 'touchstart' === this.touchEvents.start &&
              (this.$wrapperEl.on(
                this.touchEvents.start,
                s,
                e.onGestureStart,
                t
              ),
              this.$wrapperEl.on(
                this.touchEvents.move,
                s,
                e.onGestureChange,
                i
              ),
              this.$wrapperEl.on(this.touchEvents.end, s, e.onGestureEnd, t),
              this.touchEvents.cancel &&
                this.$wrapperEl.on(
                  this.touchEvents.cancel,
                  s,
                  e.onGestureEnd,
                  t
                )),
            this.$wrapperEl.on(
              this.touchEvents.move,
              '.' + this.params.zoom.containerClass,
              e.onTouchMove,
              i
            )
        }
      },
      disable: function () {
        var e = this.zoom
        if (e.enabled) {
          this.zoom.enabled = !1
          var t = !(
              'touchstart' !== this.touchEvents.start ||
              !h.passiveListener ||
              !this.params.passiveListeners
            ) && { passive: !0, capture: !1 },
            i = !h.passiveListener || { passive: !1, capture: !0 },
            s = '.' + this.params.slideClass
          h.gestures
            ? (this.$wrapperEl.off('gesturestart', s, e.onGestureStart, t),
              this.$wrapperEl.off('gesturechange', s, e.onGestureChange, t),
              this.$wrapperEl.off('gestureend', s, e.onGestureEnd, t))
            : 'touchstart' === this.touchEvents.start &&
              (this.$wrapperEl.off(
                this.touchEvents.start,
                s,
                e.onGestureStart,
                t
              ),
              this.$wrapperEl.off(
                this.touchEvents.move,
                s,
                e.onGestureChange,
                i
              ),
              this.$wrapperEl.off(this.touchEvents.end, s, e.onGestureEnd, t),
              this.touchEvents.cancel &&
                this.$wrapperEl.off(
                  this.touchEvents.cancel,
                  s,
                  e.onGestureEnd,
                  t
                )),
            this.$wrapperEl.off(
              this.touchEvents.move,
              '.' + this.params.zoom.containerClass,
              e.onTouchMove,
              i
            )
        }
      }
    },
    pe = {
      loadInSlide: function (e, t) {
        void 0 === t && (t = !0)
        var i = this,
          s = i.params.lazy
        if (void 0 !== e && 0 !== i.slides.length) {
          var a =
              i.virtual && i.params.virtual.enabled
                ? i.$wrapperEl.children(
                    '.' +
                      i.params.slideClass +
                      '[data-swiper-slide-index="' +
                      e +
                      '"]'
                  )
                : i.slides.eq(e),
            r = a.find(
              '.' +
                s.elementClass +
                ':not(.' +
                s.loadedClass +
                '):not(.' +
                s.loadingClass +
                ')'
            )
          !a.hasClass(s.elementClass) ||
            a.hasClass(s.loadedClass) ||
            a.hasClass(s.loadingClass) ||
            (r = r.add(a[0])),
            0 !== r.length &&
              r.each(function (e, r) {
                var o = n(r)
                o.addClass(s.loadingClass)
                var l = o.attr('data-background'),
                  d = o.attr('data-src'),
                  h = o.attr('data-srcset'),
                  p = o.attr('data-sizes'),
                  c = o.parent('picture')
                i.loadImage(o[0], d || l, h, p, !1, function () {
                  if (null != i && i && (!i || i.params) && !i.destroyed) {
                    if (
                      (l
                        ? (o.css('background-image', 'url("' + l + '")'),
                          o.removeAttr('data-background'))
                        : (h &&
                            (o.attr('srcset', h), o.removeAttr('data-srcset')),
                          p && (o.attr('sizes', p), o.removeAttr('data-sizes')),
                          c.length &&
                            c.children('source').each(function (e, t) {
                              var i = n(t)
                              i.attr('data-srcset') &&
                                (i.attr('srcset', i.attr('data-srcset')),
                                i.removeAttr('data-srcset'))
                            }),
                          d && (o.attr('src', d), o.removeAttr('data-src'))),
                      o.addClass(s.loadedClass).removeClass(s.loadingClass),
                      a.find('.' + s.preloaderClass).remove(),
                      i.params.loop && t)
                    ) {
                      var e = a.attr('data-swiper-slide-index')
                      if (a.hasClass(i.params.slideDuplicateClass)) {
                        var r = i.$wrapperEl.children(
                          '[data-swiper-slide-index="' +
                            e +
                            '"]:not(.' +
                            i.params.slideDuplicateClass +
                            ')'
                        )
                        i.lazy.loadInSlide(r.index(), !1)
                      } else {
                        var u = i.$wrapperEl.children(
                          '.' +
                            i.params.slideDuplicateClass +
                            '[data-swiper-slide-index="' +
                            e +
                            '"]'
                        )
                        i.lazy.loadInSlide(u.index(), !1)
                      }
                    }
                    i.emit('lazyImageReady', a[0], o[0]),
                      i.params.autoHeight && i.updateAutoHeight()
                  }
                }),
                  i.emit('lazyImageLoad', a[0], o[0])
              })
        }
      },
      load: function () {
        var e = this,
          t = e.$wrapperEl,
          i = e.params,
          s = e.slides,
          a = e.activeIndex,
          r = e.virtual && i.virtual.enabled,
          o = i.lazy,
          l = i.slidesPerView
        function d(e) {
          if (r) {
            if (
              t.children(
                '.' + i.slideClass + '[data-swiper-slide-index="' + e + '"]'
              ).length
            )
              return !0
          } else if (s[e]) return !0
          return !1
        }
        function h(e) {
          return r ? n(e).attr('data-swiper-slide-index') : n(e).index()
        }
        if (
          ('auto' === l && (l = 0),
          e.lazy.initialImageLoaded || (e.lazy.initialImageLoaded = !0),
          e.params.watchSlidesVisibility)
        )
          t.children('.' + i.slideVisibleClass).each(function (t, i) {
            var s = r ? n(i).attr('data-swiper-slide-index') : n(i).index()
            e.lazy.loadInSlide(s)
          })
        else if (l > 1)
          for (var p = a; p < a + l; p += 1) d(p) && e.lazy.loadInSlide(p)
        else e.lazy.loadInSlide(a)
        if (o.loadPrevNext)
          if (l > 1 || (o.loadPrevNextAmount && o.loadPrevNextAmount > 1)) {
            for (
              var c = o.loadPrevNextAmount,
                u = l,
                v = Math.min(a + u + Math.max(c, u), s.length),
                f = Math.max(a - Math.max(u, c), 0),
                m = a + l;
              m < v;
              m += 1
            )
              d(m) && e.lazy.loadInSlide(m)
            for (var g = f; g < a; g += 1) d(g) && e.lazy.loadInSlide(g)
          } else {
            var b = t.children('.' + i.slideNextClass)
            b.length > 0 && e.lazy.loadInSlide(h(b))
            var w = t.children('.' + i.slidePrevClass)
            w.length > 0 && e.lazy.loadInSlide(h(w))
          }
      }
    },
    ce = {
      LinearSpline: function (e, t) {
        var i,
          s,
          a,
          r,
          n,
          o = function (e, t) {
            for (s = -1, i = e.length; i - s > 1; )
              e[(a = (i + s) >> 1)] <= t ? (s = a) : (i = a)
            return i
          }
        return (
          (this.x = e),
          (this.y = t),
          (this.lastIndex = e.length - 1),
          (this.interpolate = function (e) {
            return e
              ? ((n = o(this.x, e)),
                (r = n - 1),
                ((e - this.x[r]) * (this.y[n] - this.y[r])) /
                  (this.x[n] - this.x[r]) +
                  this.y[r])
              : 0
          }),
          this
        )
      },
      getInterpolateFunction: function (e) {
        this.controller.spline ||
          (this.controller.spline = this.params.loop
            ? new ce.LinearSpline(this.slidesGrid, e.slidesGrid)
            : new ce.LinearSpline(this.snapGrid, e.snapGrid))
      },
      setTranslate: function (e, t) {
        var i,
          s,
          a = this,
          r = a.controller.control
        function n(e) {
          var t = a.rtlTranslate ? -a.translate : a.translate
          'slide' === a.params.controller.by &&
            (a.controller.getInterpolateFunction(e),
            (s = -a.controller.spline.interpolate(-t))),
            (s && 'container' !== a.params.controller.by) ||
              ((i =
                (e.maxTranslate() - e.minTranslate()) /
                (a.maxTranslate() - a.minTranslate())),
              (s = (t - a.minTranslate()) * i + e.minTranslate())),
            a.params.controller.inverse && (s = e.maxTranslate() - s),
            e.updateProgress(s),
            e.setTranslate(s, a),
            e.updateActiveIndex(),
            e.updateSlidesClasses()
        }
        if (Array.isArray(r))
          for (var o = 0; o < r.length; o += 1)
            r[o] !== t && r[o] instanceof j && n(r[o])
        else r instanceof j && t !== r && n(r)
      },
      setTransition: function (e, t) {
        var i,
          s = this,
          a = s.controller.control
        function r(t) {
          t.setTransition(e, s),
            0 !== e &&
              (t.transitionStart(),
              t.params.autoHeight &&
                d.nextTick(function () {
                  t.updateAutoHeight()
                }),
              t.$wrapperEl.transitionEnd(function () {
                a &&
                  (t.params.loop &&
                    'slide' === s.params.controller.by &&
                    t.loopFix(),
                  t.transitionEnd())
              }))
        }
        if (Array.isArray(a))
          for (i = 0; i < a.length; i += 1)
            a[i] !== t && a[i] instanceof j && r(a[i])
        else a instanceof j && t !== a && r(a)
      }
    },
    ue = {
      makeElFocusable: function (e) {
        return e.attr('tabIndex', '0'), e
      },
      makeElNotFocusable: function (e) {
        return e.attr('tabIndex', '-1'), e
      },
      addElRole: function (e, t) {
        return e.attr('role', t), e
      },
      addElLabel: function (e, t) {
        return e.attr('aria-label', t), e
      },
      disableEl: function (e) {
        return e.attr('aria-disabled', !0), e
      },
      enableEl: function (e) {
        return e.attr('aria-disabled', !1), e
      },
      onEnterKey: function (e) {
        var t = this.params.a11y
        if (13 === e.keyCode) {
          var i = n(e.target)
          this.navigation &&
            this.navigation.$nextEl &&
            i.is(this.navigation.$nextEl) &&
            ((this.isEnd && !this.params.loop) || this.slideNext(),
            this.isEnd
              ? this.a11y.notify(t.lastSlideMessage)
              : this.a11y.notify(t.nextSlideMessage)),
            this.navigation &&
              this.navigation.$prevEl &&
              i.is(this.navigation.$prevEl) &&
              ((this.isBeginning && !this.params.loop) || this.slidePrev(),
              this.isBeginning
                ? this.a11y.notify(t.firstSlideMessage)
                : this.a11y.notify(t.prevSlideMessage)),
            this.pagination &&
              i.is('.' + this.params.pagination.bulletClass) &&
              i[0].click()
        }
      },
      notify: function (e) {
        var t = this.a11y.liveRegion
        0 !== t.length && (t.html(''), t.html(e))
      },
      updateNavigation: function () {
        if (!this.params.loop && this.navigation) {
          var e = this.navigation,
            t = e.$nextEl,
            i = e.$prevEl
          i &&
            i.length > 0 &&
            (this.isBeginning
              ? (this.a11y.disableEl(i), this.a11y.makeElNotFocusable(i))
              : (this.a11y.enableEl(i), this.a11y.makeElFocusable(i))),
            t &&
              t.length > 0 &&
              (this.isEnd
                ? (this.a11y.disableEl(t), this.a11y.makeElNotFocusable(t))
                : (this.a11y.enableEl(t), this.a11y.makeElFocusable(t)))
        }
      },
      updatePagination: function () {
        var e = this,
          t = e.params.a11y
        e.pagination &&
          e.params.pagination.clickable &&
          e.pagination.bullets &&
          e.pagination.bullets.length &&
          e.pagination.bullets.each(function (i, s) {
            var a = n(s)
            e.a11y.makeElFocusable(a),
              e.a11y.addElRole(a, 'button'),
              e.a11y.addElLabel(
                a,
                t.paginationBulletMessage.replace(
                  /\{\{index\}\}/,
                  a.index() + 1
                )
              )
          })
      },
      init: function () {
        this.$el.append(this.a11y.liveRegion)
        var e,
          t,
          i = this.params.a11y
        this.navigation &&
          this.navigation.$nextEl &&
          (e = this.navigation.$nextEl),
          this.navigation &&
            this.navigation.$prevEl &&
            (t = this.navigation.$prevEl),
          e &&
            (this.a11y.makeElFocusable(e),
            this.a11y.addElRole(e, 'button'),
            this.a11y.addElLabel(e, i.nextSlideMessage),
            e.on('keydown', this.a11y.onEnterKey)),
          t &&
            (this.a11y.makeElFocusable(t),
            this.a11y.addElRole(t, 'button'),
            this.a11y.addElLabel(t, i.prevSlideMessage),
            t.on('keydown', this.a11y.onEnterKey)),
          this.pagination &&
            this.params.pagination.clickable &&
            this.pagination.bullets &&
            this.pagination.bullets.length &&
            this.pagination.$el.on(
              'keydown',
              '.' + this.params.pagination.bulletClass,
              this.a11y.onEnterKey
            )
      },
      destroy: function () {
        var e, t
        this.a11y.liveRegion &&
          this.a11y.liveRegion.length > 0 &&
          this.a11y.liveRegion.remove(),
          this.navigation &&
            this.navigation.$nextEl &&
            (e = this.navigation.$nextEl),
          this.navigation &&
            this.navigation.$prevEl &&
            (t = this.navigation.$prevEl),
          e && e.off('keydown', this.a11y.onEnterKey),
          t && t.off('keydown', this.a11y.onEnterKey),
          this.pagination &&
            this.params.pagination.clickable &&
            this.pagination.bullets &&
            this.pagination.bullets.length &&
            this.pagination.$el.off(
              'keydown',
              '.' + this.params.pagination.bulletClass,
              this.a11y.onEnterKey
            )
      }
    },
    ve = {
      init: function () {
        if (this.params.history) {
          if (!a.history || !a.history.pushState)
            return (
              (this.params.history.enabled = !1),
              void (this.params.hashNavigation.enabled = !0)
            )
          var e = this.history
          ;(e.initialized = !0),
            (e.paths = ve.getPathValues()),
            (e.paths.key || e.paths.value) &&
              (e.scrollToSlide(
                0,
                e.paths.value,
                this.params.runCallbacksOnInit
              ),
              this.params.history.replaceState ||
                a.addEventListener('popstate', this.history.setHistoryPopState))
        }
      },
      destroy: function () {
        this.params.history.replaceState ||
          a.removeEventListener('popstate', this.history.setHistoryPopState)
      },
      setHistoryPopState: function () {
        ;(this.history.paths = ve.getPathValues()),
          this.history.scrollToSlide(
            this.params.speed,
            this.history.paths.value,
            !1
          )
      },
      getPathValues: function () {
        var e = a.location.pathname
            .slice(1)
            .split('/')
            .filter(function (e) {
              return '' !== e
            }),
          t = e.length
        return { key: e[t - 2], value: e[t - 1] }
      },
      setHistory: function (e, t) {
        if (this.history.initialized && this.params.history.enabled) {
          var i = this.slides.eq(t),
            s = ve.slugify(i.attr('data-history'))
          a.location.pathname.includes(e) || (s = e + '/' + s)
          var r = a.history.state
          ;(r && r.value === s) ||
            (this.params.history.replaceState
              ? a.history.replaceState({ value: s }, null, s)
              : a.history.pushState({ value: s }, null, s))
        }
      },
      slugify: function (e) {
        return e
          .toString()
          .replace(/\s+/g, '-')
          .replace(/[^\w-]+/g, '')
          .replace(/--+/g, '-')
          .replace(/^-+/, '')
          .replace(/-+$/, '')
      },
      scrollToSlide: function (e, t, i) {
        if (t)
          for (var s = 0, a = this.slides.length; s < a; s += 1) {
            var r = this.slides.eq(s)
            if (
              ve.slugify(r.attr('data-history')) === t &&
              !r.hasClass(this.params.slideDuplicateClass)
            ) {
              var n = r.index()
              this.slideTo(n, e, i)
            }
          }
        else this.slideTo(0, e, i)
      }
    },
    fe = {
      onHashCange: function () {
        this.emit('hashChange')
        var e = i.location.hash.replace('#', '')
        if (e !== this.slides.eq(this.activeIndex).attr('data-hash')) {
          var t = this.$wrapperEl
            .children('.' + this.params.slideClass + '[data-hash="' + e + '"]')
            .index()
          if (void 0 === t) return
          this.slideTo(t)
        }
      },
      setHash: function () {
        if (
          this.hashNavigation.initialized &&
          this.params.hashNavigation.enabled
        )
          if (
            this.params.hashNavigation.replaceState &&
            a.history &&
            a.history.replaceState
          )
            a.history.replaceState(
              null,
              null,
              '#' + this.slides.eq(this.activeIndex).attr('data-hash') || ''
            ),
              this.emit('hashSet')
          else {
            var e = this.slides.eq(this.activeIndex),
              t = e.attr('data-hash') || e.attr('data-history')
            ;(i.location.hash = t || ''), this.emit('hashSet')
          }
      },
      init: function () {
        if (
          !(
            !this.params.hashNavigation.enabled ||
            (this.params.history && this.params.history.enabled)
          )
        ) {
          this.hashNavigation.initialized = !0
          var e = i.location.hash.replace('#', '')
          if (e)
            for (var t = 0, s = this.slides.length; t < s; t += 1) {
              var r = this.slides.eq(t)
              if (
                (r.attr('data-hash') || r.attr('data-history')) === e &&
                !r.hasClass(this.params.slideDuplicateClass)
              ) {
                var o = r.index()
                this.slideTo(o, 0, this.params.runCallbacksOnInit, !0)
              }
            }
          this.params.hashNavigation.watchState &&
            n(a).on('hashchange', this.hashNavigation.onHashCange)
        }
      },
      destroy: function () {
        this.params.hashNavigation.watchState &&
          n(a).off('hashchange', this.hashNavigation.onHashCange)
      }
    },
    me = {
      run: function () {
        var e = this,
          t = e.slides.eq(e.activeIndex),
          i = e.params.autoplay.delay
        t.attr('data-swiper-autoplay') &&
          (i = t.attr('data-swiper-autoplay') || e.params.autoplay.delay),
          clearTimeout(e.autoplay.timeout),
          (e.autoplay.timeout = d.nextTick(function () {
            e.params.autoplay.reverseDirection
              ? e.params.loop
                ? (e.loopFix(),
                  e.slidePrev(e.params.speed, !0, !0),
                  e.emit('autoplay'))
                : e.isBeginning
                ? e.params.autoplay.stopOnLastSlide
                  ? e.autoplay.stop()
                  : (e.slideTo(e.slides.length - 1, e.params.speed, !0, !0),
                    e.emit('autoplay'))
                : (e.slidePrev(e.params.speed, !0, !0), e.emit('autoplay'))
              : e.params.loop
              ? (e.loopFix(),
                e.slideNext(e.params.speed, !0, !0),
                e.emit('autoplay'))
              : e.isEnd
              ? e.params.autoplay.stopOnLastSlide
                ? e.autoplay.stop()
                : (e.slideTo(0, e.params.speed, !0, !0), e.emit('autoplay'))
              : (e.slideNext(e.params.speed, !0, !0), e.emit('autoplay')),
              e.params.cssMode && e.autoplay.running && e.autoplay.run()
          }, i))
      },
      start: function () {
        return (
          void 0 === this.autoplay.timeout &&
          !this.autoplay.running &&
          ((this.autoplay.running = !0),
          this.emit('autoplayStart'),
          this.autoplay.run(),
          !0)
        )
      },
      stop: function () {
        return (
          !!this.autoplay.running &&
          void 0 !== this.autoplay.timeout &&
          (this.autoplay.timeout &&
            (clearTimeout(this.autoplay.timeout),
            (this.autoplay.timeout = void 0)),
          (this.autoplay.running = !1),
          this.emit('autoplayStop'),
          !0)
        )
      },
      pause: function (e) {
        this.autoplay.running &&
          (this.autoplay.paused ||
            (this.autoplay.timeout && clearTimeout(this.autoplay.timeout),
            (this.autoplay.paused = !0),
            0 !== e && this.params.autoplay.waitForTransition
              ? (this.$wrapperEl[0].addEventListener(
                  'transitionend',
                  this.autoplay.onTransitionEnd
                ),
                this.$wrapperEl[0].addEventListener(
                  'webkitTransitionEnd',
                  this.autoplay.onTransitionEnd
                ))
              : ((this.autoplay.paused = !1), this.autoplay.run())))
      }
    },
    ge = {
      setTranslate: function () {
        for (var e = this.slides, t = 0; t < e.length; t += 1) {
          var i = this.slides.eq(t),
            s = -i[0].swiperSlideOffset
          this.params.virtualTranslate || (s -= this.translate)
          var a = 0
          this.isHorizontal() || ((a = s), (s = 0))
          var r = this.params.fadeEffect.crossFade
            ? Math.max(1 - Math.abs(i[0].progress), 0)
            : 1 + Math.min(Math.max(i[0].progress, -1), 0)
          i.css({ opacity: r }).transform(
            'translate3d(' + s + 'px, ' + a + 'px, 0px)'
          )
        }
      },
      setTransition: function (e) {
        var t = this,
          i = t.slides,
          s = t.$wrapperEl
        if ((i.transition(e), t.params.virtualTranslate && 0 !== e)) {
          var a = !1
          i.transitionEnd(function () {
            if (!a && t && !t.destroyed) {
              ;(a = !0), (t.animating = !1)
              for (
                var e = ['webkitTransitionEnd', 'transitionend'], i = 0;
                i < e.length;
                i += 1
              )
                s.trigger(e[i])
            }
          })
        }
      }
    },
    be = {
      setTranslate: function () {
        var e,
          t = this.$el,
          i = this.$wrapperEl,
          s = this.slides,
          a = this.width,
          r = this.height,
          o = this.rtlTranslate,
          l = this.size,
          d = this.params.cubeEffect,
          h = this.isHorizontal(),
          p = this.virtual && this.params.virtual.enabled,
          c = 0
        d.shadow &&
          (h
            ? (0 === (e = i.find('.swiper-cube-shadow')).length &&
                ((e = n('<div class="swiper-cube-shadow"></div>')),
                i.append(e)),
              e.css({ height: a + 'px' }))
            : 0 === (e = t.find('.swiper-cube-shadow')).length &&
              ((e = n('<div class="swiper-cube-shadow"></div>')), t.append(e)))
        for (var u = 0; u < s.length; u += 1) {
          var v = s.eq(u),
            f = u
          p && (f = parseInt(v.attr('data-swiper-slide-index'), 10))
          var m = 90 * f,
            g = Math.floor(m / 360)
          o && ((m = -m), (g = Math.floor(-m / 360)))
          var b = Math.max(Math.min(v[0].progress, 1), -1),
            w = 0,
            y = 0,
            x = 0
          f % 4 == 0
            ? ((w = 4 * -g * l), (x = 0))
            : (f - 1) % 4 == 0
            ? ((w = 0), (x = 4 * -g * l))
            : (f - 2) % 4 == 0
            ? ((w = l + 4 * g * l), (x = l))
            : (f - 3) % 4 == 0 && ((w = -l), (x = 3 * l + 4 * l * g)),
            o && (w = -w),
            h || ((y = w), (w = 0))
          var E =
            'rotateX(' +
            (h ? 0 : -m) +
            'deg) rotateY(' +
            (h ? m : 0) +
            'deg) translate3d(' +
            w +
            'px, ' +
            y +
            'px, ' +
            x +
            'px)'
          if (
            (b <= 1 &&
              b > -1 &&
              ((c = 90 * f + 90 * b), o && (c = 90 * -f - 90 * b)),
            v.transform(E),
            d.slideShadows)
          ) {
            var T = h
                ? v.find('.swiper-slide-shadow-left')
                : v.find('.swiper-slide-shadow-top'),
              S = h
                ? v.find('.swiper-slide-shadow-right')
                : v.find('.swiper-slide-shadow-bottom')
            0 === T.length &&
              ((T = n(
                '<div class="swiper-slide-shadow-' +
                  (h ? 'left' : 'top') +
                  '"></div>'
              )),
              v.append(T)),
              0 === S.length &&
                ((S = n(
                  '<div class="swiper-slide-shadow-' +
                    (h ? 'right' : 'bottom') +
                    '"></div>'
                )),
                v.append(S)),
              T.length && (T[0].style.opacity = Math.max(-b, 0)),
              S.length && (S[0].style.opacity = Math.max(b, 0))
          }
        }
        if (
          (i.css({
            '-webkit-transform-origin': '50% 50% -' + l / 2 + 'px',
            '-moz-transform-origin': '50% 50% -' + l / 2 + 'px',
            '-ms-transform-origin': '50% 50% -' + l / 2 + 'px',
            'transform-origin': '50% 50% -' + l / 2 + 'px'
          }),
          d.shadow)
        )
          if (h)
            e.transform(
              'translate3d(0px, ' +
                (a / 2 + d.shadowOffset) +
                'px, ' +
                -a / 2 +
                'px) rotateX(90deg) rotateZ(0deg) scale(' +
                d.shadowScale +
                ')'
            )
          else {
            var C = Math.abs(c) - 90 * Math.floor(Math.abs(c) / 90),
              M =
                1.5 -
                (Math.sin((2 * C * Math.PI) / 360) / 2 +
                  Math.cos((2 * C * Math.PI) / 360) / 2),
              P = d.shadowScale,
              z = d.shadowScale / M,
              k = d.shadowOffset
            e.transform(
              'scale3d(' +
                P +
                ', 1, ' +
                z +
                ') translate3d(0px, ' +
                (r / 2 + k) +
                'px, ' +
                -r / 2 / z +
                'px) rotateX(-90deg)'
            )
          }
        var $ = _.isSafari || _.isWebView ? -l / 2 : 0
        i.transform(
          'translate3d(0px,0,' +
            $ +
            'px) rotateX(' +
            (this.isHorizontal() ? 0 : c) +
            'deg) rotateY(' +
            (this.isHorizontal() ? -c : 0) +
            'deg)'
        )
      },
      setTransition: function (e) {
        var t = this.$el
        this.slides
          .transition(e)
          .find(
            '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left'
          )
          .transition(e),
          this.params.cubeEffect.shadow &&
            !this.isHorizontal() &&
            t.find('.swiper-cube-shadow').transition(e)
      }
    },
    we = {
      setTranslate: function () {
        for (
          var e = this.slides, t = this.rtlTranslate, i = 0;
          i < e.length;
          i += 1
        ) {
          var s = e.eq(i),
            a = s[0].progress
          this.params.flipEffect.limitRotation &&
            (a = Math.max(Math.min(s[0].progress, 1), -1))
          var r = -180 * a,
            o = 0,
            l = -s[0].swiperSlideOffset,
            d = 0
          if (
            (this.isHorizontal()
              ? t && (r = -r)
              : ((d = l), (l = 0), (o = -r), (r = 0)),
            (s[0].style.zIndex = -Math.abs(Math.round(a)) + e.length),
            this.params.flipEffect.slideShadows)
          ) {
            var h = this.isHorizontal()
                ? s.find('.swiper-slide-shadow-left')
                : s.find('.swiper-slide-shadow-top'),
              p = this.isHorizontal()
                ? s.find('.swiper-slide-shadow-right')
                : s.find('.swiper-slide-shadow-bottom')
            0 === h.length &&
              ((h = n(
                '<div class="swiper-slide-shadow-' +
                  (this.isHorizontal() ? 'left' : 'top') +
                  '"></div>'
              )),
              s.append(h)),
              0 === p.length &&
                ((p = n(
                  '<div class="swiper-slide-shadow-' +
                    (this.isHorizontal() ? 'right' : 'bottom') +
                    '"></div>'
                )),
                s.append(p)),
              h.length && (h[0].style.opacity = Math.max(-a, 0)),
              p.length && (p[0].style.opacity = Math.max(a, 0))
          }
          s.transform(
            'translate3d(' +
              l +
              'px, ' +
              d +
              'px, 0px) rotateX(' +
              o +
              'deg) rotateY(' +
              r +
              'deg)'
          )
        }
      },
      setTransition: function (e) {
        var t = this,
          i = t.slides,
          s = t.activeIndex,
          a = t.$wrapperEl
        if (
          (i
            .transition(e)
            .find(
              '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left'
            )
            .transition(e),
          t.params.virtualTranslate && 0 !== e)
        ) {
          var r = !1
          i.eq(s).transitionEnd(function () {
            if (!r && t && !t.destroyed) {
              ;(r = !0), (t.animating = !1)
              for (
                var e = ['webkitTransitionEnd', 'transitionend'], i = 0;
                i < e.length;
                i += 1
              )
                a.trigger(e[i])
            }
          })
        }
      }
    },
    ye = {
      setTranslate: function () {
        for (
          var e = this.width,
            t = this.height,
            i = this.slides,
            s = this.$wrapperEl,
            a = this.slidesSizesGrid,
            r = this.params.coverflowEffect,
            o = this.isHorizontal(),
            l = this.translate,
            d = o ? e / 2 - l : t / 2 - l,
            p = o ? r.rotate : -r.rotate,
            c = r.depth,
            u = 0,
            v = i.length;
          u < v;
          u += 1
        ) {
          var f = i.eq(u),
            m = a[u],
            g = ((d - f[0].swiperSlideOffset - m / 2) / m) * r.modifier,
            b = o ? p * g : 0,
            w = o ? 0 : p * g,
            y = -c * Math.abs(g),
            x = r.stretch
          'string' == typeof x &&
            -1 !== x.indexOf('%') &&
            (x = (parseFloat(r.stretch) / 100) * m)
          var E = o ? 0 : x * g,
            T = o ? x * g : 0,
            S = 1 - (1 - r.scale) * Math.abs(g)
          Math.abs(T) < 0.001 && (T = 0),
            Math.abs(E) < 0.001 && (E = 0),
            Math.abs(y) < 0.001 && (y = 0),
            Math.abs(b) < 0.001 && (b = 0),
            Math.abs(w) < 0.001 && (w = 0),
            Math.abs(S) < 0.001 && (S = 0)
          var C =
            'translate3d(' +
            T +
            'px,' +
            E +
            'px,' +
            y +
            'px)  rotateX(' +
            w +
            'deg) rotateY(' +
            b +
            'deg) scale(' +
            S +
            ')'
          if (
            (f.transform(C),
            (f[0].style.zIndex = 1 - Math.abs(Math.round(g))),
            r.slideShadows)
          ) {
            var M = o
                ? f.find('.swiper-slide-shadow-left')
                : f.find('.swiper-slide-shadow-top'),
              P = o
                ? f.find('.swiper-slide-shadow-right')
                : f.find('.swiper-slide-shadow-bottom')
            0 === M.length &&
              ((M = n(
                '<div class="swiper-slide-shadow-' +
                  (o ? 'left' : 'top') +
                  '"></div>'
              )),
              f.append(M)),
              0 === P.length &&
                ((P = n(
                  '<div class="swiper-slide-shadow-' +
                    (o ? 'right' : 'bottom') +
                    '"></div>'
                )),
                f.append(P)),
              M.length && (M[0].style.opacity = g > 0 ? g : 0),
              P.length && (P[0].style.opacity = -g > 0 ? -g : 0)
          }
        }
        ;(h.pointerEvents || h.prefixedPointerEvents) &&
          (s[0].style.perspectiveOrigin = d + 'px 50%')
      },
      setTransition: function (e) {
        this.slides
          .transition(e)
          .find(
            '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left'
          )
          .transition(e)
      }
    },
    xe = {
      init: function () {
        var e = this.params.thumbs,
          t = this.constructor
        e.swiper instanceof t
          ? ((this.thumbs.swiper = e.swiper),
            d.extend(this.thumbs.swiper.originalParams, {
              watchSlidesProgress: !0,
              slideToClickedSlide: !1
            }),
            d.extend(this.thumbs.swiper.params, {
              watchSlidesProgress: !0,
              slideToClickedSlide: !1
            }))
          : d.isObject(e.swiper) &&
            ((this.thumbs.swiper = new t(
              d.extend({}, e.swiper, {
                watchSlidesVisibility: !0,
                watchSlidesProgress: !0,
                slideToClickedSlide: !1
              })
            )),
            (this.thumbs.swiperCreated = !0)),
          this.thumbs.swiper.$el.addClass(
            this.params.thumbs.thumbsContainerClass
          ),
          this.thumbs.swiper.on('tap', this.thumbs.onThumbClick)
      },
      onThumbClick: function () {
        var e = this.thumbs.swiper
        if (e) {
          var t = e.clickedIndex,
            i = e.clickedSlide
          if (
            !(
              (i && n(i).hasClass(this.params.thumbs.slideThumbActiveClass)) ||
              null == t
            )
          ) {
            var s
            if (
              ((s = e.params.loop
                ? parseInt(
                    n(e.clickedSlide).attr('data-swiper-slide-index'),
                    10
                  )
                : t),
              this.params.loop)
            ) {
              var a = this.activeIndex
              this.slides.eq(a).hasClass(this.params.slideDuplicateClass) &&
                (this.loopFix(),
                (this._clientLeft = this.$wrapperEl[0].clientLeft),
                (a = this.activeIndex))
              var r = this.slides
                  .eq(a)
                  .prevAll('[data-swiper-slide-index="' + s + '"]')
                  .eq(0)
                  .index(),
                o = this.slides
                  .eq(a)
                  .nextAll('[data-swiper-slide-index="' + s + '"]')
                  .eq(0)
                  .index()
              s = void 0 === r ? o : void 0 === o ? r : o - a < a - r ? o : r
            }
            this.slideTo(s)
          }
        }
      },
      update: function (e) {
        var t = this.thumbs.swiper
        if (t) {
          var i =
              'auto' === t.params.slidesPerView
                ? t.slidesPerViewDynamic()
                : t.params.slidesPerView,
            s = this.params.thumbs.autoScrollOffset,
            a = s && !t.params.loop
          if (this.realIndex !== t.realIndex || a) {
            var r,
              n,
              o = t.activeIndex
            if (t.params.loop) {
              t.slides.eq(o).hasClass(t.params.slideDuplicateClass) &&
                (t.loopFix(),
                (t._clientLeft = t.$wrapperEl[0].clientLeft),
                (o = t.activeIndex))
              var l = t.slides
                  .eq(o)
                  .prevAll('[data-swiper-slide-index="' + this.realIndex + '"]')
                  .eq(0)
                  .index(),
                d = t.slides
                  .eq(o)
                  .nextAll('[data-swiper-slide-index="' + this.realIndex + '"]')
                  .eq(0)
                  .index()
              ;(r =
                void 0 === l
                  ? d
                  : void 0 === d
                  ? l
                  : d - o == o - l
                  ? o
                  : d - o < o - l
                  ? d
                  : l),
                (n = this.activeIndex > this.previousIndex ? 'next' : 'prev')
            } else
              n = (r = this.realIndex) > this.previousIndex ? 'next' : 'prev'
            a && (r += 'next' === n ? s : -1 * s),
              t.visibleSlidesIndexes &&
                t.visibleSlidesIndexes.indexOf(r) < 0 &&
                (t.params.centeredSlides
                  ? (r =
                      r > o
                        ? r - Math.floor(i / 2) + 1
                        : r + Math.floor(i / 2) - 1)
                  : r > o && (r = r - i + 1),
                t.slideTo(r, e ? 0 : void 0))
          }
          var h = 1,
            p = this.params.thumbs.slideThumbActiveClass
          if (
            (this.params.slidesPerView > 1 &&
              !this.params.centeredSlides &&
              (h = this.params.slidesPerView),
            this.params.thumbs.multipleActiveThumbs || (h = 1),
            (h = Math.floor(h)),
            t.slides.removeClass(p),
            t.params.loop || (t.params.virtual && t.params.virtual.enabled))
          )
            for (var c = 0; c < h; c += 1)
              t.$wrapperEl
                .children(
                  '[data-swiper-slide-index="' + (this.realIndex + c) + '"]'
                )
                .addClass(p)
          else
            for (var u = 0; u < h; u += 1)
              t.slides.eq(this.realIndex + u).addClass(p)
        }
      }
    },
    Ee = [
      K,
      U,
      Z,
      Q,
      ee,
      ie,
      ae,
      {
        name: 'mousewheel',
        params: {
          mousewheel: {
            enabled: !1,
            releaseOnEdges: !1,
            invert: !1,
            forceToAxis: !1,
            sensitivity: 1,
            eventsTarged: 'container'
          }
        },
        create: function () {
          d.extend(this, {
            mousewheel: {
              enabled: !1,
              enable: re.enable.bind(this),
              disable: re.disable.bind(this),
              handle: re.handle.bind(this),
              handleMouseEnter: re.handleMouseEnter.bind(this),
              handleMouseLeave: re.handleMouseLeave.bind(this),
              animateSlider: re.animateSlider.bind(this),
              releaseScroll: re.releaseScroll.bind(this),
              lastScrollTime: d.now(),
              lastEventBeforeSnap: void 0,
              recentWheelEvents: []
            }
          })
        },
        on: {
          init: function () {
            !this.params.mousewheel.enabled &&
              this.params.cssMode &&
              this.mousewheel.disable(),
              this.params.mousewheel.enabled && this.mousewheel.enable()
          },
          destroy: function () {
            this.params.cssMode && this.mousewheel.enable(),
              this.mousewheel.enabled && this.mousewheel.disable()
          }
        }
      },
      {
        name: 'navigation',
        params: {
          navigation: {
            nextEl: null,
            prevEl: null,
            hideOnClick: !1,
            disabledClass: 'swiper-button-disabled',
            hiddenClass: 'swiper-button-hidden',
            lockClass: 'swiper-button-lock'
          }
        },
        create: function () {
          d.extend(this, {
            navigation: {
              init: ne.init.bind(this),
              update: ne.update.bind(this),
              destroy: ne.destroy.bind(this),
              onNextClick: ne.onNextClick.bind(this),
              onPrevClick: ne.onPrevClick.bind(this)
            }
          })
        },
        on: {
          init: function () {
            this.navigation.init(), this.navigation.update()
          },
          toEdge: function () {
            this.navigation.update()
          },
          fromEdge: function () {
            this.navigation.update()
          },
          destroy: function () {
            this.navigation.destroy()
          },
          click: function (e) {
            var t,
              i = this.navigation,
              s = i.$nextEl,
              a = i.$prevEl
            !this.params.navigation.hideOnClick ||
              n(e.target).is(a) ||
              n(e.target).is(s) ||
              (s
                ? (t = s.hasClass(this.params.navigation.hiddenClass))
                : a && (t = a.hasClass(this.params.navigation.hiddenClass)),
              !0 === t
                ? this.emit('navigationShow', this)
                : this.emit('navigationHide', this),
              s && s.toggleClass(this.params.navigation.hiddenClass),
              a && a.toggleClass(this.params.navigation.hiddenClass))
          }
        }
      },
      {
        name: 'pagination',
        params: {
          pagination: {
            el: null,
            bulletElement: 'span',
            clickable: !1,
            hideOnClick: !1,
            renderBullet: null,
            renderProgressbar: null,
            renderFraction: null,
            renderCustom: null,
            progressbarOpposite: !1,
            type: 'bullets',
            dynamicBullets: !1,
            dynamicMainBullets: 1,
            formatFractionCurrent: function (e) {
              return e
            },
            formatFractionTotal: function (e) {
              return e
            },
            bulletClass: 'swiper-pagination-bullet',
            bulletActiveClass: 'swiper-pagination-bullet-active',
            modifierClass: 'swiper-pagination-',
            currentClass: 'swiper-pagination-current',
            totalClass: 'swiper-pagination-total',
            hiddenClass: 'swiper-pagination-hidden',
            progressbarFillClass: 'swiper-pagination-progressbar-fill',
            progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
            clickableClass: 'swiper-pagination-clickable',
            lockClass: 'swiper-pagination-lock'
          }
        },
        create: function () {
          d.extend(this, {
            pagination: {
              init: oe.init.bind(this),
              render: oe.render.bind(this),
              update: oe.update.bind(this),
              destroy: oe.destroy.bind(this),
              dynamicBulletIndex: 0
            }
          })
        },
        on: {
          init: function () {
            this.pagination.init(),
              this.pagination.render(),
              this.pagination.update()
          },
          activeIndexChange: function () {
            ;(this.params.loop || void 0 === this.snapIndex) &&
              this.pagination.update()
          },
          snapIndexChange: function () {
            this.params.loop || this.pagination.update()
          },
          slidesLengthChange: function () {
            this.params.loop &&
              (this.pagination.render(), this.pagination.update())
          },
          snapGridLengthChange: function () {
            this.params.loop ||
              (this.pagination.render(), this.pagination.update())
          },
          destroy: function () {
            this.pagination.destroy()
          },
          click: function (e) {
            this.params.pagination.el &&
              this.params.pagination.hideOnClick &&
              this.pagination.$el.length > 0 &&
              !n(e.target).hasClass(this.params.pagination.bulletClass) &&
              (!0 ===
              this.pagination.$el.hasClass(this.params.pagination.hiddenClass)
                ? this.emit('paginationShow', this)
                : this.emit('paginationHide', this),
              this.pagination.$el.toggleClass(
                this.params.pagination.hiddenClass
              ))
          }
        }
      },
      {
        name: 'scrollbar',
        params: {
          scrollbar: {
            el: null,
            dragSize: 'auto',
            hide: !1,
            draggable: !1,
            snapOnRelease: !0,
            lockClass: 'swiper-scrollbar-lock',
            dragClass: 'swiper-scrollbar-drag'
          }
        },
        create: function () {
          d.extend(this, {
            scrollbar: {
              init: le.init.bind(this),
              destroy: le.destroy.bind(this),
              updateSize: le.updateSize.bind(this),
              setTranslate: le.setTranslate.bind(this),
              setTransition: le.setTransition.bind(this),
              enableDraggable: le.enableDraggable.bind(this),
              disableDraggable: le.disableDraggable.bind(this),
              setDragPosition: le.setDragPosition.bind(this),
              getPointerPosition: le.getPointerPosition.bind(this),
              onDragStart: le.onDragStart.bind(this),
              onDragMove: le.onDragMove.bind(this),
              onDragEnd: le.onDragEnd.bind(this),
              isTouched: !1,
              timeout: null,
              dragTimeout: null
            }
          })
        },
        on: {
          init: function () {
            this.scrollbar.init(),
              this.scrollbar.updateSize(),
              this.scrollbar.setTranslate()
          },
          update: function () {
            this.scrollbar.updateSize()
          },
          resize: function () {
            this.scrollbar.updateSize()
          },
          observerUpdate: function () {
            this.scrollbar.updateSize()
          },
          setTranslate: function () {
            this.scrollbar.setTranslate()
          },
          setTransition: function (e) {
            this.scrollbar.setTransition(e)
          },
          destroy: function () {
            this.scrollbar.destroy()
          }
        }
      },
      {
        name: 'parallax',
        params: { parallax: { enabled: !1 } },
        create: function () {
          d.extend(this, {
            parallax: {
              setTransform: de.setTransform.bind(this),
              setTranslate: de.setTranslate.bind(this),
              setTransition: de.setTransition.bind(this)
            }
          })
        },
        on: {
          beforeInit: function () {
            this.params.parallax.enabled &&
              ((this.params.watchSlidesProgress = !0),
              (this.originalParams.watchSlidesProgress = !0))
          },
          init: function () {
            this.params.parallax.enabled && this.parallax.setTranslate()
          },
          setTranslate: function () {
            this.params.parallax.enabled && this.parallax.setTranslate()
          },
          setTransition: function (e) {
            this.params.parallax.enabled && this.parallax.setTransition(e)
          }
        }
      },
      {
        name: 'zoom',
        params: {
          zoom: {
            enabled: !1,
            maxRatio: 3,
            minRatio: 1,
            toggle: !0,
            containerClass: 'swiper-zoom-container',
            zoomedSlideClass: 'swiper-slide-zoomed'
          }
        },
        create: function () {
          var e = this,
            t = {
              enabled: !1,
              scale: 1,
              currentScale: 1,
              isScaling: !1,
              gesture: {
                $slideEl: void 0,
                slideWidth: void 0,
                slideHeight: void 0,
                $imageEl: void 0,
                $imageWrapEl: void 0,
                maxRatio: 3
              },
              image: {
                isTouched: void 0,
                isMoved: void 0,
                currentX: void 0,
                currentY: void 0,
                minX: void 0,
                minY: void 0,
                maxX: void 0,
                maxY: void 0,
                width: void 0,
                height: void 0,
                startX: void 0,
                startY: void 0,
                touchesStart: {},
                touchesCurrent: {}
              },
              velocity: {
                x: void 0,
                y: void 0,
                prevPositionX: void 0,
                prevPositionY: void 0,
                prevTime: void 0
              }
            }
          'onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out'
            .split(' ')
            .forEach(function (i) {
              t[i] = he[i].bind(e)
            }),
            d.extend(e, { zoom: t })
          var i = 1
          Object.defineProperty(e.zoom, 'scale', {
            get: function () {
              return i
            },
            set: function (t) {
              if (i !== t) {
                var s = e.zoom.gesture.$imageEl
                    ? e.zoom.gesture.$imageEl[0]
                    : void 0,
                  a = e.zoom.gesture.$slideEl
                    ? e.zoom.gesture.$slideEl[0]
                    : void 0
                e.emit('zoomChange', t, s, a)
              }
              i = t
            }
          })
        },
        on: {
          init: function () {
            this.params.zoom.enabled && this.zoom.enable()
          },
          destroy: function () {
            this.zoom.disable()
          },
          touchStart: function (e) {
            this.zoom.enabled && this.zoom.onTouchStart(e)
          },
          touchEnd: function (e) {
            this.zoom.enabled && this.zoom.onTouchEnd(e)
          },
          doubleTap: function (e) {
            this.params.zoom.enabled &&
              this.zoom.enabled &&
              this.params.zoom.toggle &&
              this.zoom.toggle(e)
          },
          transitionEnd: function () {
            this.zoom.enabled &&
              this.params.zoom.enabled &&
              this.zoom.onTransitionEnd()
          },
          slideChange: function () {
            this.zoom.enabled &&
              this.params.zoom.enabled &&
              this.params.cssMode &&
              this.zoom.onTransitionEnd()
          }
        }
      },
      {
        name: 'lazy',
        params: {
          lazy: {
            enabled: !1,
            loadPrevNext: !1,
            loadPrevNextAmount: 1,
            loadOnTransitionStart: !1,
            elementClass: 'swiper-lazy',
            loadingClass: 'swiper-lazy-loading',
            loadedClass: 'swiper-lazy-loaded',
            preloaderClass: 'swiper-lazy-preloader'
          }
        },
        create: function () {
          d.extend(this, {
            lazy: {
              initialImageLoaded: !1,
              load: pe.load.bind(this),
              loadInSlide: pe.loadInSlide.bind(this)
            }
          })
        },
        on: {
          beforeInit: function () {
            this.params.lazy.enabled &&
              this.params.preloadImages &&
              (this.params.preloadImages = !1)
          },
          init: function () {
            this.params.lazy.enabled &&
              !this.params.loop &&
              0 === this.params.initialSlide &&
              this.lazy.load()
          },
          scroll: function () {
            this.params.freeMode &&
              !this.params.freeModeSticky &&
              this.lazy.load()
          },
          resize: function () {
            this.params.lazy.enabled && this.lazy.load()
          },
          scrollbarDragMove: function () {
            this.params.lazy.enabled && this.lazy.load()
          },
          transitionStart: function () {
            this.params.lazy.enabled &&
              (this.params.lazy.loadOnTransitionStart ||
                (!this.params.lazy.loadOnTransitionStart &&
                  !this.lazy.initialImageLoaded)) &&
              this.lazy.load()
          },
          transitionEnd: function () {
            this.params.lazy.enabled &&
              !this.params.lazy.loadOnTransitionStart &&
              this.lazy.load()
          },
          slideChange: function () {
            this.params.lazy.enabled && this.params.cssMode && this.lazy.load()
          }
        }
      },
      {
        name: 'controller',
        params: { controller: { control: void 0, inverse: !1, by: 'slide' } },
        create: function () {
          d.extend(this, {
            controller: {
              control: this.params.controller.control,
              getInterpolateFunction: ce.getInterpolateFunction.bind(this),
              setTranslate: ce.setTranslate.bind(this),
              setTransition: ce.setTransition.bind(this)
            }
          })
        },
        on: {
          update: function () {
            this.controller.control &&
              this.controller.spline &&
              ((this.controller.spline = void 0), delete this.controller.spline)
          },
          resize: function () {
            this.controller.control &&
              this.controller.spline &&
              ((this.controller.spline = void 0), delete this.controller.spline)
          },
          observerUpdate: function () {
            this.controller.control &&
              this.controller.spline &&
              ((this.controller.spline = void 0), delete this.controller.spline)
          },
          setTranslate: function (e, t) {
            this.controller.control && this.controller.setTranslate(e, t)
          },
          setTransition: function (e, t) {
            this.controller.control && this.controller.setTransition(e, t)
          }
        }
      },
      {
        name: 'a11y',
        params: {
          a11y: {
            enabled: !0,
            notificationClass: 'swiper-notification',
            prevSlideMessage: 'Previous slide',
            nextSlideMessage: 'Next slide',
            firstSlideMessage: 'This is the first slide',
            lastSlideMessage: 'This is the last slide',
            paginationBulletMessage: 'Go to slide {{index}}'
          }
        },
        create: function () {
          var e = this
          d.extend(e, {
            a11y: {
              liveRegion: n(
                '<span class="' +
                  e.params.a11y.notificationClass +
                  '" aria-live="assertive" aria-atomic="true"></span>'
              )
            }
          }),
            Object.keys(ue).forEach(function (t) {
              e.a11y[t] = ue[t].bind(e)
            })
        },
        on: {
          init: function () {
            this.params.a11y.enabled &&
              (this.a11y.init(), this.a11y.updateNavigation())
          },
          toEdge: function () {
            this.params.a11y.enabled && this.a11y.updateNavigation()
          },
          fromEdge: function () {
            this.params.a11y.enabled && this.a11y.updateNavigation()
          },
          paginationUpdate: function () {
            this.params.a11y.enabled && this.a11y.updatePagination()
          },
          destroy: function () {
            this.params.a11y.enabled && this.a11y.destroy()
          }
        }
      },
      {
        name: 'history',
        params: { history: { enabled: !1, replaceState: !1, key: 'slides' } },
        create: function () {
          d.extend(this, {
            history: {
              init: ve.init.bind(this),
              setHistory: ve.setHistory.bind(this),
              setHistoryPopState: ve.setHistoryPopState.bind(this),
              scrollToSlide: ve.scrollToSlide.bind(this),
              destroy: ve.destroy.bind(this)
            }
          })
        },
        on: {
          init: function () {
            this.params.history.enabled && this.history.init()
          },
          destroy: function () {
            this.params.history.enabled && this.history.destroy()
          },
          transitionEnd: function () {
            this.history.initialized &&
              this.history.setHistory(this.params.history.key, this.activeIndex)
          },
          slideChange: function () {
            this.history.initialized &&
              this.params.cssMode &&
              this.history.setHistory(this.params.history.key, this.activeIndex)
          }
        }
      },
      {
        name: 'hash-navigation',
        params: {
          hashNavigation: { enabled: !1, replaceState: !1, watchState: !1 }
        },
        create: function () {
          d.extend(this, {
            hashNavigation: {
              initialized: !1,
              init: fe.init.bind(this),
              destroy: fe.destroy.bind(this),
              setHash: fe.setHash.bind(this),
              onHashCange: fe.onHashCange.bind(this)
            }
          })
        },
        on: {
          init: function () {
            this.params.hashNavigation.enabled && this.hashNavigation.init()
          },
          destroy: function () {
            this.params.hashNavigation.enabled && this.hashNavigation.destroy()
          },
          transitionEnd: function () {
            this.hashNavigation.initialized && this.hashNavigation.setHash()
          },
          slideChange: function () {
            this.hashNavigation.initialized &&
              this.params.cssMode &&
              this.hashNavigation.setHash()
          }
        }
      },
      {
        name: 'autoplay',
        params: {
          autoplay: {
            enabled: !1,
            delay: 3e3,
            waitForTransition: !0,
            disableOnInteraction: !0,
            stopOnLastSlide: !1,
            reverseDirection: !1
          }
        },
        create: function () {
          var e = this
          d.extend(e, {
            autoplay: {
              running: !1,
              paused: !1,
              run: me.run.bind(e),
              start: me.start.bind(e),
              stop: me.stop.bind(e),
              pause: me.pause.bind(e),
              onVisibilityChange: function () {
                'hidden' === document.visibilityState &&
                  e.autoplay.running &&
                  e.autoplay.pause(),
                  'visible' === document.visibilityState &&
                    e.autoplay.paused &&
                    (e.autoplay.run(), (e.autoplay.paused = !1))
              },
              onTransitionEnd: function (t) {
                e &&
                  !e.destroyed &&
                  e.$wrapperEl &&
                  t.target === this &&
                  (e.$wrapperEl[0].removeEventListener(
                    'transitionend',
                    e.autoplay.onTransitionEnd
                  ),
                  e.$wrapperEl[0].removeEventListener(
                    'webkitTransitionEnd',
                    e.autoplay.onTransitionEnd
                  ),
                  (e.autoplay.paused = !1),
                  e.autoplay.running ? e.autoplay.run() : e.autoplay.stop())
              }
            }
          })
        },
        on: {
          init: function () {
            this.params.autoplay.enabled &&
              (this.autoplay.start(),
              document.addEventListener(
                'visibilitychange',
                this.autoplay.onVisibilityChange
              ))
          },
          beforeTransitionStart: function (e, t) {
            this.autoplay.running &&
              (t || !this.params.autoplay.disableOnInteraction
                ? this.autoplay.pause(e)
                : this.autoplay.stop())
          },
          sliderFirstMove: function () {
            this.autoplay.running &&
              (this.params.autoplay.disableOnInteraction
                ? this.autoplay.stop()
                : this.autoplay.pause())
          },
          touchEnd: function () {
            this.params.cssMode &&
              this.autoplay.paused &&
              !this.params.autoplay.disableOnInteraction &&
              this.autoplay.run()
          },
          destroy: function () {
            this.autoplay.running && this.autoplay.stop(),
              document.removeEventListener(
                'visibilitychange',
                this.autoplay.onVisibilityChange
              )
          }
        }
      },
      {
        name: 'effect-fade',
        params: { fadeEffect: { crossFade: !1 } },
        create: function () {
          d.extend(this, {
            fadeEffect: {
              setTranslate: ge.setTranslate.bind(this),
              setTransition: ge.setTransition.bind(this)
            }
          })
        },
        on: {
          beforeInit: function () {
            if ('fade' === this.params.effect) {
              this.classNames.push(this.params.containerModifierClass + 'fade')
              var e = {
                slidesPerView: 1,
                slidesPerColumn: 1,
                slidesPerGroup: 1,
                watchSlidesProgress: !0,
                spaceBetween: 0,
                virtualTranslate: !0
              }
              d.extend(this.params, e), d.extend(this.originalParams, e)
            }
          },
          setTranslate: function () {
            'fade' === this.params.effect && this.fadeEffect.setTranslate()
          },
          setTransition: function (e) {
            'fade' === this.params.effect && this.fadeEffect.setTransition(e)
          }
        }
      },
      {
        name: 'effect-cube',
        params: {
          cubeEffect: {
            slideShadows: !0,
            shadow: !0,
            shadowOffset: 20,
            shadowScale: 0.94
          }
        },
        create: function () {
          d.extend(this, {
            cubeEffect: {
              setTranslate: be.setTranslate.bind(this),
              setTransition: be.setTransition.bind(this)
            }
          })
        },
        on: {
          beforeInit: function () {
            if ('cube' === this.params.effect) {
              this.classNames.push(this.params.containerModifierClass + 'cube'),
                this.classNames.push(this.params.containerModifierClass + '3d')
              var e = {
                slidesPerView: 1,
                slidesPerColumn: 1,
                slidesPerGroup: 1,
                watchSlidesProgress: !0,
                resistanceRatio: 0,
                spaceBetween: 0,
                centeredSlides: !1,
                virtualTranslate: !0
              }
              d.extend(this.params, e), d.extend(this.originalParams, e)
            }
          },
          setTranslate: function () {
            'cube' === this.params.effect && this.cubeEffect.setTranslate()
          },
          setTransition: function (e) {
            'cube' === this.params.effect && this.cubeEffect.setTransition(e)
          }
        }
      },
      {
        name: 'effect-flip',
        params: { flipEffect: { slideShadows: !0, limitRotation: !0 } },
        create: function () {
          d.extend(this, {
            flipEffect: {
              setTranslate: we.setTranslate.bind(this),
              setTransition: we.setTransition.bind(this)
            }
          })
        },
        on: {
          beforeInit: function () {
            if ('flip' === this.params.effect) {
              this.classNames.push(this.params.containerModifierClass + 'flip'),
                this.classNames.push(this.params.containerModifierClass + '3d')
              var e = {
                slidesPerView: 1,
                slidesPerColumn: 1,
                slidesPerGroup: 1,
                watchSlidesProgress: !0,
                spaceBetween: 0,
                virtualTranslate: !0
              }
              d.extend(this.params, e), d.extend(this.originalParams, e)
            }
          },
          setTranslate: function () {
            'flip' === this.params.effect && this.flipEffect.setTranslate()
          },
          setTransition: function (e) {
            'flip' === this.params.effect && this.flipEffect.setTransition(e)
          }
        }
      },
      {
        name: 'effect-coverflow',
        params: {
          coverflowEffect: {
            rotate: 50,
            stretch: 0,
            depth: 100,
            scale: 1,
            modifier: 1,
            slideShadows: !0
          }
        },
        create: function () {
          d.extend(this, {
            coverflowEffect: {
              setTranslate: ye.setTranslate.bind(this),
              setTransition: ye.setTransition.bind(this)
            }
          })
        },
        on: {
          beforeInit: function () {
            'coverflow' === this.params.effect &&
              (this.classNames.push(
                this.params.containerModifierClass + 'coverflow'
              ),
              this.classNames.push(this.params.containerModifierClass + '3d'),
              (this.params.watchSlidesProgress = !0),
              (this.originalParams.watchSlidesProgress = !0))
          },
          setTranslate: function () {
            'coverflow' === this.params.effect &&
              this.coverflowEffect.setTranslate()
          },
          setTransition: function (e) {
            'coverflow' === this.params.effect &&
              this.coverflowEffect.setTransition(e)
          }
        }
      },
      {
        name: 'thumbs',
        params: {
          thumbs: {
            swiper: null,
            multipleActiveThumbs: !0,
            autoScrollOffset: 0,
            slideThumbActiveClass: 'swiper-slide-thumb-active',
            thumbsContainerClass: 'swiper-container-thumbs'
          }
        },
        create: function () {
          d.extend(this, {
            thumbs: {
              swiper: null,
              init: xe.init.bind(this),
              update: xe.update.bind(this),
              onThumbClick: xe.onThumbClick.bind(this)
            }
          })
        },
        on: {
          beforeInit: function () {
            var e = this.params.thumbs
            e && e.swiper && (this.thumbs.init(), this.thumbs.update(!0))
          },
          slideChange: function () {
            this.thumbs.swiper && this.thumbs.update()
          },
          update: function () {
            this.thumbs.swiper && this.thumbs.update()
          },
          resize: function () {
            this.thumbs.swiper && this.thumbs.update()
          },
          observerUpdate: function () {
            this.thumbs.swiper && this.thumbs.update()
          },
          setTransition: function (e) {
            var t = this.thumbs.swiper
            t && t.setTransition(e)
          },
          beforeDestroy: function () {
            var e = this.thumbs.swiper
            e && this.thumbs.swiperCreated && e && e.destroy()
          }
        }
      }
    ]
  return (
    void 0 === j.use &&
      ((j.use = j.Class.use), (j.installModule = j.Class.installModule)),
    j.use(Ee),
    j
  )
})
